2014-09-26 2 views
7

Я хотел изменить размер UIView, мой код отлично работает в iOS 7.1, но когда я запустил его в iOS 8, он не работал должным образом (Я объясню ниже).анимация UIView, пытающаяся изменить размер кадра, не работает в iOS 8, но в iOS 7

У меня есть UIView Int раскадровки со значениями (0,67,511,320), я хочу, чтобы изменить размер на весь экран на IPad, поэтому я добавил следующий код:

 [UIView animateWithDuration:0.5 animations:^{ 

      CGRect frame = containerView.frame; 
      frame.origin.x = 0; 
      frame.origin.y = 67; 
      frame.size.height = 643; 
      frame.size.width = 1024; 
      containerView.frame = frame; 
      ... 

     }completion:^(BOOL finished) { 
      ... 
     }]; 

Я хотел что-то вроде:

_________________________________ 
|   |      | 
|   |      | 
|  A  |      | 
|___________|      | 
|         | 
|    BACKGROUND  | 
|         | 
|         | 
|_________________________________| 

       | 
       V 
_________________________________ 
|         | 
|         | 
|         | 
|    A     | 
|         | 
|         | 
|         | 
|         | 
|_________________________________| 

Но анимация начинается, как (0,67,0,0) к (0,67,511,320)

Любые подсказки о том, что происходит? Или альтернатива?

+0

Обратите внимание, что вам не нужно, чтобы получить кадр из 'containerView.frame' при перезаписи всех членов, как и вы. – Aaganrmu

+0

Да, я знаю, спасибо за совет. –

ответ

17

Вы должны отключить pregenerated ограничений. Самый простой способ - использовать авторезистирующие маски вместо ограничений для анимации представления.

containerView.translatesAutoresizingMaskIntoConstraints = YES; 

Вы можете поместить этот код в ваш метод -viewDidLoad или чуть выше [UIView animateWithDuration:...

+0

Какой должен быть contrainerView, если у меня есть scrollview и uiview внутри scrollview и анимации, происходящих внутри этого uiview. Это будет uiview? – coolcool1994

4

разрешено автоспуск? возможно в прошивке 8 некоторые дополнительные сдерживает добавление во время сборки

попытаться вызвать [self.view layoutIfNeeded]; в animatin блоке, после того, как анимация коды самых

UPDATE

__block CGRect frame = containerView.frame; 
frame.origin.x = 0; 
frame.origin.y = 67; 
frame.size.height = 643; 
frame.size.width = 1024; 

[UIView animateWithDuration:0.5 animations:^{ 

     containerView.frame = frame; 
     ... 

    }completion:^(BOOL finished) { 
     ... 
    }]; 
+0

Я добавляю свои взгляды в раскадровку, как я могу отключить это? –

+0

Помогла ли [self.view layoutIfNeeded] помощь? Также посмотрите, как оживить просмотр с помощью constrints. Http://stackoverflow.com/questions/17626802/animating-uiview-frame-with-constraints – Roma

+0

нет, анимация не показывалась, если я использую ее:/ –

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

  • Нет связанных вопросов^_^