开启自动布局时 UINavigationBar 异常

Posted

技术标签:

【中文标题】开启自动布局时 UINavigationBar 异常【英文标题】:UINavigationBar exception when turning on autolayout 【发布时间】:2013-12-06 14:33:01 【问题描述】:

我有一个为 ios 5.0 构建的应用程序。

现在为 iOS 7 重新构建。构建良好。很多常见的 iOS7 GUI 问题需要修复,例如 MKMapView 在旋转到横向后仅响应屏幕左半部分的触摸。

所以打开了自动布局。 现在它可以构建(有很多我必须经历的弃用警告),但在启动时崩溃

由于未捕获的异常“NSInternalInconsistencyException”,原因: '执行 -layoutSubviews 后仍需要自动布局。 UINavigationBar 的 -layoutSubviews 的实现需要调用 超级。'

欢迎在我开始处理警告时提出任何建议...

【问题讨论】:

你在使用自定义导航栏类​​吗? 用 UINavigationController 实现 *navController = [[UINavigationController alloc] initWithRootViewController:placesViewController]; [navController.navigationBar setTintColor:[UIColor blackColor]];在 AppDelegate.m 应用程序中:didFinishLaunchingWithOptions: 【参考方案1】:

我通过从我的 XIB 中删除 UINavigationBar 解决了这个问题。幸运的是,tehre 是实现我需要的 GUI 功能的另一种方式。

我的 MKMapView 在纵向上也能正常工作,但在横向上,右手 1/3rd 不会响应触摸。

解决这个问题的方法是删除旧的 XIB 文件,然后从头开始创建一个新文件(只需 10 分钟的工作)。

因此,如果您在将 iOS 5.0 项目升级到 iOS 7.x 时遇到问题,请考虑从头开始重新创建 XIB 文件。

【讨论】:

以上是关于开启自动布局时 UINavigationBar 异常的主要内容,如果未能解决你的问题,请参考以下文章

使用 UINavigationBar 和 UIBarButtonItem 自动布局

自动布局 UITextField 以适应 UINavigationBar

根据自动布局更改 UILabel 中的字体大小(swift)

设置 contentInset 时 UINavigationBar 自动折叠

旋转到横向时自动调整 UINavigationBar 的大小

UINavigationBar 标题文本部分显示在屏幕上