3

Я пытаюсь оживить отображение/скрытие строки поиска, используя код ниже (строка поиска должна появиться слева и развернуть вправо в течение 1-2 секунд). Тем не менее, он не оживляет и поискBar сразу отображается независимо от того, сколько времени я ставлю. Я заметил следующее:UiView.animateWithDuration Не анимируется Swift

  • Продолжительность не соблюдается
  • Не даже задержка уважается
  • Анимация не происходит. Компонент немедленно показан

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    //code to get selected value... 
    //Hide the collection view and show search bar 
    
    UIView.animateWithDuration(10.0, 
        delay: 0.0, 
        options: UIViewAnimationOptions.TransitionCrossDissolve, 
        animations: { 
         self.searchBar.hidden = false 
         self.searchBar.frame = CGRectMake(0, 0, 300, 44) //This doesn't work either 
        }, 
        completion: { (finished: Bool) in 
         return true 
        }) 
    } 
    

Я использую Xcode 7, 8 и IOS, Swift 2.0. Я видел в другом решении, но никто из них не работает для меня. Просьба помочь ...

Обновление: Работало с кодом ниже. Тем не менее, он использовал вариант анимации по умолчанию UIViewAnimationOptionCurveEaseInOut и TransitionNone

UIView.animateWithDuration(0.7, 
       animations: { 
        self.searchBar.alpha = 1.0 
        self.searchBarRect.origin.x = self.searchBarRect.origin.x + 200 
        self.searchBar.frame = self.searchBarRect 
       }, 
       completion: { (finished: Bool) in 
        return true 
      }) 
+2

Где вы устанавливаете панель поиска alpha в 0? –

+0

Я подозреваю, что смена рамки будет работать в системе автоспуска. –

+0

Alpha установлен на ноль перед кодом uiview – Sategroup

ответ

2

Перед animateWithDuration установите XPosition -200 и YPosition до -200.

Как и Даниэль, вам также необходимо изменить альфа от чего-то другого, кроме 1.0, чтобы увидеть, как он «затухает».

Вы используете автозапуск? Если это так, вы можете оживить ограничения вместо фрейма.

И, наконец, вы уверены, что правильно подключили панель поиска?

Редактировать: PS Я бы сохранил продолжительность примерно до 3.0 или 5.0. 10.0 возьмет навсегда и может заставить вас думать, что он ничего не делает из-за того, сколько времени потребуется. Сделайте его 3.0 или 5.0 (макс.) Только для тестирования, а затем уменьшите его до нужного места.

+0

Lotta имеет разные способы ее обработки. Один из способов - запустить 2 разных анимации (1 сделать движение, а другой - затухать). установите одну анимацию, чтобы начать смещение, как через 1 секунду после первого запуска. Другой - использовать анимационную GROUP - где вы можете получить немного более мелкозернистый контроль –

+0

Я был бы признателен, если бы увидел рабочий фрагмент кода – Sategroup

+0

Я выбираю ваше решение в качестве ответа за небольшим исключением: '10 секунд не всегда навеки', 'Я нахожусь в AutoLayout, но мне не нужно анимировать ограничения, я бы все еще анимации фрейма' – Sategroup

Смежные вопросы