2014-11-26 2 views
10

У меня проблема с расширением и сокращением UIEffectView. Он расширяется хорошо, но когда он сжимается, он мгновенно привязывается к своей конечной высоте и скользит в нужное положение, оставляя за собой слабый эффект вибрации. Heres gif, чтобы проиллюстрировать проблему. http://i.imgur.com/Lh8q7m1.gifUIVisualEffectView ошибка анимации размытия

project layout

Это происходит в новой пустой настройки проекта, как так: project layout

Вот код анимации:

- (IBAction)toggleEffects:(id)sender { 
[self.view setNeedsLayout]; 

if(self._effectsHeight.constant == 50){ 
    self._effectsHeight.constant = 500; 
}else{ 
    self._effectsHeight.constant = 50; 
} 
[UIView animateWithDuration:1.5f 
       animations:^{ 
        [self.view layoutIfNeeded]; 
       }]; 

}

+0

Я вижу то же самое. Похож на меня. Я подал ошибку с Apple Bug Reporter, нет # 19187042 –

+0

Мне удалось исправить это, добавив представление эффектов в качестве подсмотра маскирующего представления. Представление эффектов настроено так, чтобы иметь полную высоту, на которую вы планируете завершить анимацию, и вы оживляете высоту маскирующего вида, чтобы показать вид эффектов ниже. –

+0

Не могли бы вы добавить рамку вокруг представления, чтобы исследовать ее фрейм и отправить другой GIF? – wczekalski

ответ

2

Я думаю, что вы необходимо установить код изменения размера внутри блока анимации . Пробуйте следующим образом:

[UIView animateWithDuration:1.5f 
       animations:^{ 
        if(self._effectsHeight.constant == 50){ 
         self._effectsHeight.constant = 500; 
        }else{ 
         self._effectsHeight.constant = 50; 
          } 
       }]; 
+0

Вау, это действительно исправляет проблему. Спасибо –

+0

Не работает для меня :(И вы должны называть [self.view layoutIfNeeded]; в блоке анимации – surfrider

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