开启自动布局时 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 自动折叠