UITableView
、UINavigationBar
等元素在 iOS 7 上有不同的风格。
此样式在运行时确定,因为这些类是在 UIKit
上实现的,并且 UIKit
在运行时动态链接到您的应用程序,而不是在编译时静态链接。
所以人们会认为在 iOS 7 上运行的任何应用程序都会让这些元素看起来像在 iOS 7 上的样子。但是,在您使用 iOS 7 SDK 编译之前,它们会保持与在 iOS 6 上相同的样式.除了其中一些(例如 UIAlertView
或 UIMenuController
)
我对此的唯一解释是他们做了类似这样的事情:
#define SDKApplicationWasLinkedAgainst ...
if (SDKApplicationWasLinkedAgainst < 7.0)
...
else
...
这显然很麻烦,因为他们需要继续维护很多旧代码。所以我很好奇,这真的是幕后发生的事情吗?我错过了什么?
最佳答案
在不过多涉及 NDA 领域的情况下,我只想声明是的,他们正在根据以下调用的结果对外观和行为进行条件化:
_UIApplicationUsesLegacyUI()
此函数依次调用 GSApplicationUsesLegacyUI()
,我推测它会根据链接的 UIKit 版本返回结果。
这意味着是的,他们正在为遗留的 UIKit 部分条件化。不确定这是好事,但他们决定这样做。
关于iphone - iOS 7 如何实现 UI 元素,以便它们根据您使用的 SDK 编译而有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578489/