Я пытаюсь добиться эффекта «показать/скрыть вкладку», и содержимое будет расширено, чтобы заполнить пространство, в котором была панель вкладок.Autolayout with hide/show tab bar animation в iOS7
Я нашел код для отображения/скрытия панели вкладок и я доволен (источник: http://www.developers-life.com/hide-uitabbarcontrolleruitabbar-with-animation.html)
я добавил следующий код для размещения моя кнопка соответственно:
if (hiddenTabBar) {
self.constraintToBottom.constant=0;
[self.TestButton setNeedsUpdateConstraints];
} else {
self.constraintToBottom.constant=-49;
[self.TestButton setNeedsUpdateConstraints];
}
[self.TestButton layoutIfNeeded];
и это работает как и ожидалось. Кроме анимации кнопки. Это начальный экран приложения перед тем анимации:
и это после того, как анимация
я могу успешно скрыть панель вкладок и положение кнопки с правильной анимацией. Однако, когда я хочу снова отобразить панель вкладок, кнопка, похоже, начинает снизу (снаружи) экрана вместо положения, как показано на второй диаграмме. Я настроить время анимации, так что я могу захватить экран во время анимации:
следующий мой полный код для скрытия/показа действия панели вкладок
- (IBAction)TestTapped:(id)sender {
[UIView beginAnimations:nil context:NULL];
if(hiddenTabBar)
[UIView setAnimationDuration:60];
else
[UIView setAnimationDuration:0.5];
for(UIView *view in self.tabBarController.view.subviews)
{
CGRect _rect = view.frame;
if([view isKindOfClass:[UITabBar class]])
{
if (hiddenTabBar) {
_rect.origin.y = 431;
[view setFrame:_rect];
} else {
_rect.origin.y = 480;
[view setFrame:_rect];
}
} else if(view==self.TestButton)
{
NSLog(@"ZZ");
}
else{
if (hiddenTabBar) {
_rect.size.height = 431;
[view setFrame:_rect];
} else {
_rect.size.height = 480;
[view setFrame:_rect];
}
}
}
if (hiddenTabBar) {
self.constraintToBottom.constant=0;
[self.TestButton setNeedsUpdateConstraints];
} else {
self.constraintToBottom.constant=-49;
[self.TestButton setNeedsUpdateConstraints];
}
[self.TestButton layoutIfNeeded];
[UIView commitAnimations];
hiddenTabBar =!hiddenTabBar;
}
Я ожидал бы, что анимация кнопки начнется с точного положения моей второй диаграммы.