Я обновляю свое приложение для iPhone на экране большего размера iPhone 5, и, похоже, проблема связана с animateWithDuration:
. Прежде чем я включил автоматическое отключение, элементы интерфейса немного переместились бы вверх по экрану, когда UITextField стал первым ответчиком и вернется в исходное положение, когда UITextField потеряет свой первый статус ответчика. Теперь они просто беспорядочно взлетают и с экрана, и я понятия не имею, почему. Я переместить объекты с кодом ниже (и это работало с autolayout выключен):AutoLayout и animateWithDuration проблемы
[UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
int offset = 160;
[object1 setFrame:CGRectMake(0, -offset, object1.frame.size.width, object1.frame.size.height)];
[object2 setFrame:CGRectMake(object2.frame.origin.x, object2.frame.origin.y-offset, object2.frame.size.width, object2.frame.size.height)];
[object3 setFrame:CGRectMake(object3.frame.origin.x, object3.frame.origin.y-offset, object3.frame.size.width, object3.frame.size.height)];
}
completion:^(BOOL finished){}];
Есть ли у него что-то делать с попытками переместить объекты на константу? Даже когда я установил offset
в 0
, все объекты все еще летают с экрана. Я попытался определить, какой экран имеет устройство, и перемещать объекты на разные суммы, но это тоже не сработало. У кого-нибудь есть идеи?
Заранее благодарен!
autolayout и frame animation конфликтуют друг с другом. Я рассматриваю это как самую большую ошибку IOS 6 (из многих). Для решений см. Мою книгу: http://www.apeth.com/iOSBook/ch17.html#_animation_and_autolayout – matt