使用同样的代码,不同版本 Xcode,即不同版本的 Base SDK,生成的包在同一个 iOS 11 设备上,UINavigationBar 表现不一致。
使用 Xcode9(Base SDK iOS 11)编译的版本,是新的 UINavigationBar 结构,内部有_UINavigationBarContentView
使用 Xcode8(Base SDK iOS 10)编译的版本,是旧的 UINavigationBar 结构。
UIKit 难道不是动态库么? UINavigationBar 会打包进程序里?
![]() | 1 LINAICAI 2017-09-13 18:59:36 +08:00 同样,我这边也一堆问题,而且根本找不到代码问题,唯一能解析的是 GM 版都还完全改好,比如 UITableView 的 header 和 footer 高,完全不对。 |
![]() | 2 ainopara 2017-09-13 19:20:36 +08:00 via iPhone iOS 上有旧的 SDK 旧应用以兼容模式运行。 |
![]() | 4 xayung 2017-09-14 09:54:38 +08:00 我也遇到 UINavigationBar 的问题了,糟心中... |
![]() | 5 xi_lin OP @LINAICAI 你是不是有的 header/footer 高度返回是 CGFLOAT_MIN,但是没实现 viewForHeaderInSection/viewForFooterInSection ? |
7 okerivy 2017-09-14 11:14:53 +08:00 xcode9 运行在 ios11 xcode 8 编译就没问题 layoutsubview 循环调用.... |
![]() | 10 ainopara 2017-09-14 13:19:23 +08:00 @xi_lin 应该不止一个版本。我没有越狱设备看得不到。但是保留旧版本 SDK 的好处也很明显: 用户从 AppStore 中下载一个最后更新于几年前的应用,他依然可以看到那个应用正常的样子,而不是一个由于缺少适配而界面错乱的样子。 |
![]() | 11 pynix 2017-09-14 15:15:23 +08:00 和 android 一样,里面一大推 BuildConfig.SDK_INT 的判断。。。 |
![]() | 12 LINAICAI 2017-09-14 15:44:22 +08:00 @xi_lin 没错,之前的版本没实现 viewForHeaderInSection/viewForFooterInSection 也可以返回 CGFLOAT_MIN 的高度。 |
![]() | 16 xayoung 2017-09-15 14:39:47 +08:00 @xi_lin 原来我在 sizeThatFits 中修改导航栏高度,iOS11 现在完全不起作用了。layoutSubview 只能处理 contentView,整体 bar 的高度没办法处理 |