V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
iOS 开发实用书单
iPhone App Development: The Missing Manual
Cocoa and Objective-C: Up and Running
Cocoa Programming for Mac OS X
深入浅出设计模式 Head First Design Patterns
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
V2EX  ›  iDev

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

  •  
  •   xi_lin · 67 天前 · 2176 次点击
    这是一个创建于 67 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    18 回复  |  直到 2017-09-15 16:57:51 +08:00
        1
    LINAICAI   67 天前
    同样,我这边也一堆问题,而且根本找不到代码问题,唯一能解析的是 GM 版都还完全改好,比如 UITableView 的 header 和 footer 高,完全不对。
        2
    ainopara   67 天前 via iPhone
    iOS 上有旧的 SDK 旧应用以兼容模式运行。
        3
    beimenjun   67 天前
    @LINAICAI 什么情况?
        4
    xayoung   67 天前
    我也遇到 UINavigationBar 的问题了,糟心中...
        5
    xi_lin   67 天前
    @LINAICAI 你是不是有的 header/footer 高度返回是 CGFLOAT_MIN,但是没实现 viewForHeaderInSection/viewForFooterInSection ?
        6
    xi_lin   67 天前
    @xayoung 我暂时分运行时系统版本在 layoutSubview 里处理了
        7
    okerivy   66 天前
    xcode9 运行在 ios11
    xcode 8 编译就没问题
    layoutsubview 循环调用....
        8
    xi_lin   66 天前
    @okerivy 我的问题是 UIKit 作为动态库为啥表现会不一致
    layoutSubviews 不会循环调用啊
        9
    xi_lin   66 天前
    @ainopara 居然还这样?那会带几个版本的旧 SDK ?
        10
    ainopara   66 天前
    @xi_lin 应该不止一个版本。我没有越狱设备看得不到。但是保留旧版本 SDK 的好处也很明显:
    用户从 AppStore 中下载一个最后更新于几年前的应用,他依然可以看到那个应用正常的样子,而不是一个由于缺少适配而界面错乱的样子。
        11
    pynix   66 天前
    和 android 一样,里面一大推 BuildConfig.SDK_INT 的判断。。。
        12
    LINAICAI   66 天前
    @xi_lin 没错,之前的版本没实现 viewForHeaderInSection/viewForFooterInSection 也可以返回 CGFLOAT_MIN 的高度。
        13
    xi_lin   66 天前
    @ainopara 这个好处是对的。不过会造成系统体积变大。。。
        14
    xi_lin   66 天前
    @LINAICAI 嗯,是啊。这个行为变化了。
        15
    LINAICAI   66 天前
    @xi_lin 实际上好多变了。
    给人感觉要么苹果坑一波开发者,要么 iOS11Bug 巨多
        16
    xayoung   65 天前
    @xi_lin 原来我在 sizeThatFits 中修改导航栏高度,iOS11 现在完全不起作用了。layoutSubview 只能处理 contentView,整体 bar 的高度没办法处理
        17
    xi_lin   65 天前
    @xayoung 我是 hide 了 navigationController 带的 navigationBar,重新生成了一个自己摆
        18
    xayoung   65 天前
    @xi_lin 目前看来只有这条路了
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2861 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 59ms · UTC 02:23 · PVG 10:23 · LAX 18:23 · JFK 21:23
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1