полностью показать / скрыть контроллер вкладок и использовать пробел - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь скрыть контроллер панели вкладок и отобразить изображение uiimageview подобно тому, как это делается в родной библиотеке фотографий iphone.Я уже создал библиотеку, но у меня возникла проблема с отображением изображений на следующем экране путем скрытия панели вкладок.Я могу скрыть панель вкладок, но когда я пытаюсь добавить представление uiimage, оно не расходует пространство, занимаемое панелью вкладок.Я хочу, чтобы мой uiimageview растянулся до нижней части экрана.Я даже хочу добавить кнопку в это пустое место, но я не могу это сделать.

Мой код для скрытия панели вкладок:

 self.tabBarController.tabBar.hidden = YES;

Может кто-нибудь помочь мне?

Спасибо
Pankaj

Ответы [ 4 ]

0 голосов
/ 12 августа 2016

Я боролся с этим часами.Наконец я нашел решение.Просто выполните следующие шаги:

  • Установите флажок Скрыть нижнюю панель при нажатии в вашем дочернем контроллере представления (тот, который вы хотите скрыть панель вкладок) из раскадровки.

  • Добавьте следующий код в методе viewWillAppear в вашем корневом контроллере представления: self.tabBarController?.tabBar.hidden = false.

  • Добавьте следующий код вviewWillAppear метод в вашем контроллере с push-просмотром: self.tabBarController?.tabBar.hidden = true.

Вот и все.Это просто работает!

0 голосов
/ 16 февраля 2012

просто используйте ниже два метода, чтобы скрыть или показать контроллер панели вкладок.поместите эти методы в класс делегата, чтобы его можно было легко вызывать из любого класса.

- (void) hideTabBar:(UITabBarController *) tabbarcontroller {

int height = 480;

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

for(UIView *view in tabbarcontroller.view.subviews) {
    if([view isKindOfClass:[UITabBar class]]) {
        [view setFrame:CGRectMake(view.frame.origin.x, height, view.frame.size.width, view.frame.size.height)];
    } 
    else {
        [view setFrame:CGRectMake(view.frame.origin.x,view.frame.origin.y, 320, 436)];
    }
}
[UIView commitAnimations];

}

- (void) showTabBar:(UITabBarController *) tabbarcontroller {

    int height = 480;

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3]; 

    for(UIView *view in tabbarcontroller.view.subviews) {

        if([view isKindOfClass:[UITabBar class]]) {
            [view setFrame:CGRectMake(view.frame.origin.x, height, view.frame.size.width, view.frame.size.height)];            
        } 
        else {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, height)];
        }
    }    

    [UIView commitAnimations];
}
0 голосов
/ 17 января 2013

Вам необходимо установить фрейм нижнего подпредставления свойства представления tabBarController, например:

self.tabBarController.tabBar.hidden = YES;
UIView* subview = (UIView*)[self.tabBarController.view.subviews objectAtIndex:0];
imageView.frame = subview.frame = self.window.bounds;

Это то, что я использовал в некоторой форме в паре продуктов в производстве. То, хотите ли вы на самом деле использовать self.window.bounds, зависит от того, имеет ли ваш текущий класс свойство окна, указывающее на экземпляр mainWindow UIWindow, поддерживает ли вы несколько ориентаций (границы окна остаются неизменными независимо от текущего UIInterfaceOrientation, контроллеры вида вращаются, окна нет) и если вам нужно учитывать статусную строку. Если учитывается строка состояния (UIStatusBar), сместите y & height на 20. Приведение подпредставления к UIView в этом случае позволяет использовать точечный синтаксис (статический анализатор не может определить, какие объекты находятся в массиве). 1009 *

0 голосов
/ 16 февраля 2012

Попробуйте это

self.tabBarController.tabBar.hidden = YES;

и

 [imageView setFrame:CGRectMake(0,0,320,480)];
...