iphone - iOS 7 如何实现 UI 元素,以便它们根据您使用的 SDK 编译而有所不同?

标签 iphone ios ios7

UITableViewUINavigationBar等元素在 iOS 7 上有不同的风格。

此样式在运行时确定,因为这些类是在 UIKit 上实现的,并且 UIKit 在运行时动态链接到您的应用程序,而不是在编译时静态链接。

所以人们会认为在 iOS 7 上运行的任何应用程序都会让这些元素看起来像在 iOS 7 上的样子。但是,在您使用 iOS 7 SDK 编译之前,它们会保持与在 iOS 6 上相同的样式.除了其中一些(例如 UIAlertViewUIMenuController)

我对此的唯一解释是他们做了类似这样的事情:

#define SDKApplicationWasLinkedAgainst ...
if (SDKApplicationWasLinkedAgainst < 7.0)
    ...
else
    ...

这显然很麻烦,因为他们需要继续维护很多旧代码。所以我很好奇,这真的是幕后发生的事情吗?我错过了什么?

最佳答案

在不过多涉及 NDA 领域的情况下,我只想声明是的,他们正在根据以下调用的结果对外观和行为进行条件化:

_UIApplicationUsesLegacyUI()

此函数依次调用 GSApplicationUsesLegacyUI(),我推测它会根据链接的 UIKit 版本返回结果。

这意味着是的,他们正在为遗留的 UIKit 部分条件化。不确定这是好事,但他们决定这样做。

关于iphone - iOS 7 如何实现 UI 元素,以便它们根据您使用的 SDK 编译而有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578489/

相关文章:

iphone - 导航堆栈中的某些 UIViewController 中未显示选项卡栏

调用 nil 后 iPhone 内存没有释放

ios - navigationController alpha 会重置吗?当应用程序从后台激活时

ios - UIApplication 发送操作 :to:from:forEvent: iOS7 no user code

iphone - 如何获取从 iPhone 库中选择的多张图片的路径?

ios - 在 iOS 应用程序中采用侧边菜单。查看 Controller 结构问题

ios - swift/iOS : UIPicker display is not refreshed until tapped after changing the datasource programmatically

ios - NSInternalInconsistencyException,在我关闭下一个场景后崩溃

ios - 双击主页后后台应用程序屏幕截图显示方向错误

iphone - UITextField 用 NSUndoManager 支持替换文本