Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 完全显示/隐藏tabbar控制器并使用空间_Iphone_Ios_Uiimageview_Uitabbarcontroller - Fatal编程技术网

Iphone 完全显示/隐藏tabbar控制器并使用空间

Iphone 完全显示/隐藏tabbar控制器并使用空间,iphone,ios,uiimageview,uitabbarcontroller,Iphone,Ios,Uiimageview,Uitabbarcontroller,我试图隐藏tabbar控制器并显示uiimageview,这与iphone本机照片库中的操作类似。我已经创建了这个库,但是我在通过隐藏tabbar在下一个视图中显示图像时遇到了问题。我可以隐藏选项卡栏,但当我尝试添加uiimageview时,它不会占用选项卡栏占用的空间。我希望我的uiimageview一直延伸到屏幕底部。 我甚至想在那个空白处添加一个按钮,但我不能这样做 隐藏选项卡栏的我的代码: self.tabBarController.tabBar.hidden = YES; 谁能帮帮

我试图隐藏tabbar控制器并显示uiimageview,这与iphone本机照片库中的操作类似。我已经创建了这个库,但是我在通过隐藏tabbar在下一个视图中显示图像时遇到了问题。我可以隐藏选项卡栏,但当我尝试添加uiimageview时,它不会占用选项卡栏占用的空间。我希望我的uiimageview一直延伸到屏幕底部。 我甚至想在那个空白处添加一个按钮,但我不能这样做

隐藏选项卡栏的我的代码:

 self.tabBarController.tabBar.hidden = YES;
谁能帮帮我吗

谢谢
Pankaj

试试这个

self.tabBarController.tabBar.hidden = YES;


只需使用以下两种方法隐藏或显示tabbar控制器。将此方法放在委托类中,以便从任何类调用都很容易

- (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];
}


您需要设置
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
,取决于当前类是否有指向
UIWindow
的主窗口实例的窗口属性,以及您是否支持多个方向(不管当前的
UIInterfaceOrientation
,视图控制器旋转,窗口不旋转,窗口的边界保持不变)以及是否需要考虑状态栏。如果考虑状态栏(
UIStatusBar
),将y和高度偏移20。在这种情况下,将子视图转换为UIView允许使用点语法(静态分析器无法分辨数组中有哪些对象)。

我为此苦苦挣扎了几个小时。最后我找到了解决方案。只需按照以下步骤操作即可:

  • 勾选从情节提要中推入子视图控制器(要隐藏选项卡栏的控制器)时隐藏底部栏的框

  • 在根视图控制器的
    视图中添加以下代码将出现
    方法:
    self.tabBar控制器?.tabBar.hidden=false

  • 在推式视图控制器中的
    viewwillbeen
    方法中添加以下代码:
    self.tabBar控制器?.tabBar.hidden=true


仅此而已。它很管用!

我已经试过多次了,但都不管用。你有什么解决方案吗?考虑到不同的形状因素,你应该硬编码高度吗?可能是“int height=[[UIScreen mainScreen]bounds].size.height;”?
- (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];
}
self.tabBarController.tabBar.hidden = YES;
UIView* subview = (UIView*)[self.tabBarController.view.subviews objectAtIndex:0];
imageView.frame = subview.frame = self.window.bounds;