我正在尝试将导航栏放在屏幕顶部下方。
我在viewWillAppear
中尝试了以下内容:
self.navigationController.view.frame = CGRectMake(0.0, 54.0, 320.0, 426.0);
self.navigationController.navigationBar.frame = CGRectMake(0.0, 0.0, 320.0, 44.0);
问题是它似乎只在第一次显示视图时才起作用。如果您转到另一个选项卡,然后返回,则导航栏位于屏幕顶部。当iPhone旋转时也会发生这种情况。
我是否应该尝试调整导航控制器框架,还是应该尝试将导航控制器添加到屏幕顶部下方的另一个视图?
答案 0 :(得分:3)
虽然很晚,但我希望这仍然可以帮助其他人。我在viewDidAppear:animated中使用了Stephens代码,导航栏在返回选项卡时保持不变。这允许我在导航栏上方使用徽标。我在viewController中使用了这个。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.navigationController.view.frame = CGRectMake(0.0, 100.0, 320.0, 426.0);
self.navigationController.navigationBar.frame = CGRectMake(0.0, 0.0, 320.0, 44.0);
[self loadData];
}
答案 1 :(得分:-1)
我可以通过覆盖自定义导航控制器的viewDidAppear中的frame属性来更改帧。我还将导航控制器视图添加到另一个视图,该视图是窗口的子视图并进行相同的剪辑。请注意,因为以这种方式,您将松开对将附加到导航控制器的每个视图控制器的标准调用。我不记得我是否也为我的视图控制器使用了自定义视图:可能是,并且使用didMoveToSuperview或didMoveToWindow覆盖以模拟默认行为。希望它有助于并原谅我的英语。