Как скрыть пользовательскую кнопку панели вкладок, когда hidesBottomBarWhenPressed имеет значение «TRUE»
Я использую фрагмент кода из Tito, чтобы добавить пользовательскую кнопку на панель вкладок: https://github.com/tciuro/CustomTabBar
(Создание подкласса UITabbarController и добавление пользовательской кнопки с помощью
// .. created a UIButton *button
[self.view addSubview:button];
)
Это прекрасно работает с моим приложением, основанным на раскадровке, за исключением случая подпредставления в контроллере навигации с опцией «Скрывать нижнюю панель при нажатии». включен. Это скрывает панель вкладок, как и было обещано, но не пользовательскую кнопку. Похоже, кнопка должна быть добавлена в качестве подпредставления к самой панели вкладок? Я попробовал этот уродливый код, который даже не заставлял кнопку появляться:
for(UIView *view in self.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
[view addSubview:button];
break;
}
}
Есть идеи?
UPDATE: Мое решение: В моем ApplicationDelegate я определяю следующие методы, которые я вызываю при необходимости в методах viewWillAppear или viewWillDisappear:
-(void)hideCenterButton:(BOOL)animated
{
if(animated){
[UIView animateWithDuration:0.3
delay:0.0f
options:UIViewAnimationCurveLinear
animations:^{
CGRect frame = self.centerButton.frame;
frame.origin.x = -100;
self.centerButton.frame = frame;
}
completion:^(BOOL finished){
}];
}
}
-(void)showCenterButton:(BOOL)animated
{
if(animated){
[UIView animateWithDuration:0.35
delay:0.0f
options:UIViewAnimationCurveLinear
animations:^{
CGRect frame = self.centerButton.frame;
frame.origin.x = (self.view.superview.frame.size.width / 2) - (self.centerButton.frame.size.width / 2);
self.centerButton.frame = frame;
}
completion:^(BOOL finished){
}];
}
}
Мне пришлось установить длительность анимации на 0,35 с, чтобы получить плавный эффект в гармонии с панелью вкладок.