Xcode9 编译出来的程序在 iOS 11 设备上与 Xcode8 生成的表现不一致

2017-09-13 18:16:18 +08:00
 xi_lin

使用同样的代码,不同版本 Xcode,即不同版本的 Base SDK,生成的包在同一个 iOS 11 设备上,UINavigationBar 表现不一致。

使用 Xcode9(Base SDK iOS 11)编译的版本,是新的 UINavigationBar 结构,内部有_UINavigationBarContentView

使用 Xcode8(Base SDK iOS 10)编译的版本,是旧的 UINavigationBar 结构。

UIKit 难道不是动态库么? UINavigationBar 会打包进程序里?

5687 次点击
所在节点    iDev
18 条回复
LINAICAI
2017-09-13 18:59:36 +08:00
同样,我这边也一堆问题,而且根本找不到代码问题,唯一能解析的是 GM 版都还完全改好,比如 UITableView 的 header 和 footer 高,完全不对。
ainopara
2017-09-13 19:20:36 +08:00
iOS 上有旧的 SDK 旧应用以兼容模式运行。
beimenjun
2017-09-13 19:37:06 +08:00
@LINAICAI 什么情况?
xayoung
2017-09-14 09:54:38 +08:00
我也遇到 UINavigationBar 的问题了,糟心中...
xi_lin
2017-09-14 10:15:04 +08:00
@LINAICAI 你是不是有的 header/footer 高度返回是 CGFLOAT_MIN,但是没实现 viewForHeaderInSection/viewForFooterInSection ?
xi_lin
2017-09-14 10:15:30 +08:00
@xayoung 我暂时分运行时系统版本在 layoutSubview 里处理了
okerivy
2017-09-14 11:14:53 +08:00
xcode9 运行在 ios11
xcode 8 编译就没问题
layoutsubview 循环调用....
xi_lin
2017-09-14 12:43:52 +08:00
@okerivy 我的问题是 UIKit 作为动态库为啥表现会不一致
layoutSubviews 不会循环调用啊
xi_lin
2017-09-14 12:44:21 +08:00
@ainopara 居然还这样?那会带几个版本的旧 SDK ?
ainopara
2017-09-14 13:19:23 +08:00
@xi_lin 应该不止一个版本。我没有越狱设备看得不到。但是保留旧版本 SDK 的好处也很明显:
用户从 AppStore 中下载一个最后更新于几年前的应用,他依然可以看到那个应用正常的样子,而不是一个由于缺少适配而界面错乱的样子。
pynix
2017-09-14 15:15:23 +08:00
和 android 一样,里面一大推 BuildConfig.SDK_INT 的判断。。。
LINAICAI
2017-09-14 15:44:22 +08:00
@xi_lin 没错,之前的版本没实现 viewForHeaderInSection/viewForFooterInSection 也可以返回 CGFLOAT_MIN 的高度。
xi_lin
2017-09-14 18:03:30 +08:00
@ainopara 这个好处是对的。不过会造成系统体积变大。。。
xi_lin
2017-09-14 18:03:52 +08:00
@LINAICAI 嗯,是啊。这个行为变化了。
LINAICAI
2017-09-14 18:27:58 +08:00
@xi_lin 实际上好多变了。
给人感觉要么苹果坑一波开发者,要么 iOS11Bug 巨多
xayoung
2017-09-15 14:39:47 +08:00
@xi_lin 原来我在 sizeThatFits 中修改导航栏高度,iOS11 现在完全不起作用了。layoutSubview 只能处理 contentView,整体 bar 的高度没办法处理
xi_lin
2017-09-15 16:00:53 +08:00
@xayoung 我是 hide 了 navigationController 带的 navigationBar,重新生成了一个自己摆
xayoung
2017-09-15 16:57:51 +08:00
@xi_lin 目前看来只有这条路了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/390452

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX