Как скрыть настраиваемую кнопку панели вкладок, если для hidesBottomBarWhenPushed установлено значение «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;
    }
}

Есть идеи?

ОБНОВЛЕНИЕ: Мое решение: В моем 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 с, чтобы получить плавный эффект, гармонирующий с панелью вкладок.

9
задан bjoern 25 August 2012 в 01:08
поделиться