У меня есть два UIViews (Мой плохой - UIView
и UIButton
), которые я анимирую в то же время. Первоначально у меня был вид и контейнер, который бы оживлял просто отлично и работал как шарм.UIView не меняет позицию в animateWithDuration
Теперь только один из моих UIViews будет перемещаться/анимировать в animateWithDuration, даже если через отладку кадр другого представления говорит, что он находится в положении, которого нет.
CGRect rect = self.toggle.frame;
CGRect tabRect = self.tabButton.frame;
rect.origin.x = rect.origin.x - rect.size.width;
NSLog(@"%f Before",tabRect.origin.x);
tabRect.origin.x = tabRect.origin.x - rect.size.width;
NSLog(@"%f After", tabRect.origin.x);
[UIView animateWithDuration:0.3 animations:^{ // animate the following:
self.toggle.frame = rect; // move to new location
self.tabButton.frame = tabRect;
}];
NSLog(@"%f AfterAnimation", tabButton.frame.origin.x);
Вид тумблер движется нормально, но tabButton
вид не одушевленный или двигаться. Странно, что оба кода отладки «After» и «AfterAnimation» возвращают одинаковое значение, что предполагает, что кадр действительно переместился. Есть ли определенная причина, по которой это не будет работать, если toggle
является UIView
, когда он будет работать как UIContainerView
?
Обратите внимание, что если я удалить строку
self.toggle.frame = rect;
tabButton
оживит правильно, но если я перееду toggle
, tabButton
не будет двигаться независимо от того, является ли он первым в блоке анимации или второй.
Редактировать: Я попытался переместить их в отдельные блоки и изменить центральную точку, а не рамку, но безрезультатно. Кажется, что если вид toggle
перемещается, то tabButton
не будет двигаться.
Edit 2:. Иллюстрированное свидетельство {
На следующих скриншотах tabButton Б.Г. зеленый и переключение Б.Г. красный.
Выше: Исходное положение (toggle
выключен экран) правильное положение
Выше: Проблема в вопросе toggle
правильно tabButton
не
Вверху: Когда self.toggle.frame = rect
закомментирована (tabButton
правильно, toggle
нет) }
Edit 3:. Это даже хуже, чем я опасался {
Я сделал еще несколько тестов, и даже если я беру toggle
измените из блока анимации, чтобы сделать его мгновенным, tabButton
будет еще не анимировать. Это заставляет меня думать, что tabButton
может просто принципиально не любить вид toggle
и/или меня, так что я не буду двигаться, чтобы на меня наброситься.
}
Редактировать 4: {
Если изменить tabButton
анимацию tabButton.frame = CGRectMake(10,10,100,100)
The View защелкивается сразу к этому месту и оживляет обратно в исходное положение в то же время, что и продолжительность анимации.
}
Я лучше добавить больше бухгалтерское/информацию TLDR в случае, если вещи не ясны.
toggle
является экземпляромToggleDraw
, который является подтаблица изUIView
, который я создал.tabButton
являетсяUIButton
, которая является частью моей IB ViewController и свойство классаОба
toggle
иtabButton
являются подвиды изself.view
анимаций будет работать в индивидуальном порядке без каких-либо изменений к логика прямых, но не будет работать, если они будут анимированы в то же время
toggle
анимация, похоже, воспринимается pr ecedence надtabButton
анимации, независимо от того,
Как по крайней мере временный хак, что произойдет, если вы поместите их в отдельные блоки? – nhgrif
По-прежнему не будет работать, если линия переключения не закомментирована –
Интересно. Можете ли вы проверить две кнопки для каких-либо различий в их свойствах? – nhgrif