Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
Objective c 如何隐藏UINavigationBar_Objective C_Cocoa Touch_View_Uinavigationbar - Fatal编程技术网

Objective c 如何隐藏UINavigationBar

Objective c 如何隐藏UINavigationBar,objective-c,cocoa-touch,view,uinavigationbar,Objective C,Cocoa Touch,View,Uinavigationbar,是否可以放置将覆盖导航栏的视图对象?我简直不能把它放在那里。它总是躲在导航下。酒吧。我不建议尝试覆盖你的导航栏,因为它的存在是有原因的。但是,要完全隐藏它,您可以向导航控制器发送setNavigationBarHidden:animated:method。我不建议尝试覆盖导航栏,因为它的存在是有原因的。但是,要完全隐藏它,您可以向导航控制器发送setNavigationBarHidden:animated:方法。您可以在其中一个ViewController的viewDidLoad中执行以下操作:

是否可以放置将覆盖导航栏的视图对象?我简直不能把它放在那里。它总是躲在导航下。酒吧。

我不建议尝试覆盖你的导航栏,因为它的存在是有原因的。但是,要完全隐藏它,您可以向导航控制器发送setNavigationBarHidden:animated:method。

我不建议尝试覆盖导航栏,因为它的存在是有原因的。但是,要完全隐藏它,您可以向导航控制器发送setNavigationBarHidden:animated:方法。

您可以在其中一个ViewController的viewDidLoad中执行以下操作:

- (void)viewDidLoad 
{
    [super viewDidLoad];
    UIView* navigationBarCover = [[UIView alloc] initWithFrame:self.navigationController.navigationBar.frame];
    navigationBarCover.backgroundColor = [UIColor blackColor];
    [self.navigationController.view addSubview:navigationBarCover];
}
您还可以隐藏导航栏并将视图放置在viewControllers视图上:

- (void)viewDidLoad 
{
    [super viewDidLoad];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    UIView* navigationBarCover = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    navigationBarCover.backgroundColor = [UIColor redColor];
    [self.view addSubview:navigationBarCover];
}

您可以在其中一个ViewController的viewDidLoad中执行以下操作:

- (void)viewDidLoad 
{
    [super viewDidLoad];
    UIView* navigationBarCover = [[UIView alloc] initWithFrame:self.navigationController.navigationBar.frame];
    navigationBarCover.backgroundColor = [UIColor blackColor];
    [self.navigationController.view addSubview:navigationBarCover];
}
您还可以隐藏导航栏并将视图放置在viewControllers视图上:

- (void)viewDidLoad 
{
    [super viewDidLoad];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    UIView* navigationBarCover = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    navigationBarCover.backgroundColor = [UIColor redColor];
    [self.view addSubview:navigationBarCover];
}
如果UIViewController位于UIAbbarController下,则在调用viewDidLoad之前不会设置[self-navigationController],因为在选择相应的选项卡之前不会确定其布局。此时,[self-navigationController]的状态可能已被iOS更改,以便导航栏再次可见

对于影响视图布局的更改,最好在UIViewController方法viewDidLayoutSubviews中执行这些更改。在UIViewController执行的哪一点之前,如果存在[self-navigationController],则始终会设置[self-navigationController],并且iOS不会进一步更改其状态

理想情况下,viewDidLoad只能用于实例化视图的内容,而不能在布局中定位内容。由于更改导航栏的可见性会影响视图的布局,因此在viewDidLoad中设置其可见性可能会导致未定义的行为

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    [[self navigationController]
        setNavigationBarHidden:YES
        animated:NO];
}
如果UIViewController位于UIAbbarController下,则在调用viewDidLoad之前不会设置[self-navigationController],因为在选择相应的选项卡之前不会确定其布局。此时,[self-navigationController]的状态可能已被iOS更改,以便导航栏再次可见

对于影响视图布局的更改,最好在UIViewController方法viewDidLayoutSubviews中执行这些更改。在UIViewController执行的哪一点之前,如果存在[self-navigationController],则始终会设置[self-navigationController],并且iOS不会进一步更改其状态

理想情况下,viewDidLoad只能用于实例化视图的内容,而不能在布局中定位内容。由于更改导航栏的可见性会影响视图的布局,因此在viewDidLoad中设置其可见性可能会导致未定义的行为

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    [[self navigationController]
        setNavigationBarHidden:YES
        animated:NO];
}

这与Xcode无关。已编辑。这与Xcode无关。已编辑。这将回答OP,但请不要这样做。非常糟糕的事情TM。这回答了OP,但请不要这样做。非常糟糕的事情。