ios - 在 'viewDidAppear' 和 'viewDidLoad' 改变 NavigationBar 的高度,为什么不一样?

标签 ios objective-c uinavigationbar viewdidload viewdidappear

我只想降低 NavigaitonBar 的高度。

我将以下代码放入 ViewDidLoad 然后我运行了这个项目。高度在一瞬间发生了变化,但很快又恢复到了默认高度。

CGRect navRect  = self.navigationController.navigationBar.frame;
navRect.size.height = 30;
self.navigationController.navigationBar.frame = navRect;

我试图把这些代码放在 将出现 ,同样的问题又发生了!

但在 viewDidAppear ,它工作正常,高度改变了。

我总是在 viewDidLoad 中添加一些 barButtonItem。说明在viewDidLoad中已经成功初始化了NavigationController,但是为什么不能改变高度呢?

这让我困惑了很长时间。

谢谢!

最佳答案

由于添加了自动布局, View 的生命周期也发生了变化。
View 中 subview 的所有几何修改都应在 viewDidLayoutSubviews 中完成方法。
从该方法的名称可以看出,这意味着在调用该方法的那一刻,所有 subview 都已正确放置。

关于ios - 在 'viewDidAppear' 和 'viewDidLoad' 改变 NavigationBar 的高度,为什么不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31851670/

相关文章:

ios - 删除后退栏按钮标题 Swift

ios - 如何使用 UISearchController *从 UINavigationBar 中删除 1px 底部边框?

ios - 使用自动布局检索 subview 的正确位置

ios - 在 iOS 8 中显示 UIAlertView 时应用程序旋转

ios - NSComparisonPredicate 用于空对多关系

ios - UILabel 无法像在 Interface Builder 中那样在 Emulator 和真实设备中正确显示文本

ios - 在 UINavigationController 堆栈中仅隐藏一个 UIViewController 的导航栏和状态栏

javascript - 如何防止phonegap应用程序离开其本地文件?

iphone - 异步添加图像 - ASIHTTPRequest

objective-c - 如何打开文件/目录获取信息窗口?