Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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:向下移动UINavigationBar?_Iphone_Uinavigationcontroller_Uinavigationbar - Fatal编程技术网

iPhone:向下移动UINavigationBar?

iPhone:向下移动UINavigationBar?,iphone,uinavigationcontroller,uinavigationbar,Iphone,Uinavigationcontroller,Uinavigationbar,我正在尝试将导航栏定位在屏幕顶部下方 我在视图中将出现中尝试了以下操作: 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); 问题在于,它似乎只在第一次显示视图时才起作用。如果您转到另一个选项卡并返回,导航栏将位于屏幕顶部。当iPh

我正在尝试将导航栏定位在屏幕顶部下方

我在
视图中将出现
中尝试了以下操作:

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旋转时也会发生这种情况


我应该尝试调整导航控制器框架,还是应该尝试将导航控制器添加到屏幕顶部下方的另一个视图?

我可以通过覆盖自定义导航控制器的ViewDidDisplay中的frame属性来更改框架。我还将导航控制器视图添加到另一个视图中,该视图是窗口的子视图,并进行相同的剪裁。请注意,因为这样会丢失对将连接到导航控制器的每个视图控制器的标准调用。我不记得我是否也为我的视图控制器使用了自定义视图:可能是的,并且覆盖didMoveToSuperview或didMoveToWindow只是为了模拟默认行为。希望它能帮助并原谅我的英语。

虽然晚了,但我希望这仍然能帮助其他人。我在viewDidAppear中使用了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];
    }

使用Interface Builder来实现这一点怎么样?似乎我可以在导航栏中拖动到视图中的任何位置。我不确定是否可以将导航控制器挂接到这个位置。如果我在IB中使用UINavigationController,它会将其仅放在视图的顶部。从UINavigationController类引用:@property(非原子,只读)UINavigationBar*导航栏讨论允许修改导航栏的barStyle或半透明属性,但决不能直接更改其边框、边界或alpha值。要显示或隐藏导航栏,应始终通过导航控制器更改其navigationBarHidden属性或调用setNavigationBarHidden:animated:方法来显示或隐藏导航栏。我最终使用Interface Builder在选项卡栏控制器中设置了带有图像的视图和带有导航控制器的导航栏。现在,当我在代码中推送另一个视图时,我缺少图像和导航栏。在xibs中,根视图实际上没有图像或导航栏,我要推送的视图也是如此。如果这对您有效,您应该展示示例。你的英语很好。如果你付出更多的努力,你的答案不会有多大的帮助。