Swift 2 API 故事板的可用性检查
Swift 2 API Availability Check for storyboard
我有一个现有的 iOS 应用程序,它受 iOS 支持 8. 我只想为 iOS 添加新功能 9.
我为 iOS 9 创建了一个新的故事板,它使用了 iOS 9 的功能,如 UIStackView。根据设备 OS 版本实例化适当的故事板文件。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let storyboard: UIStoryboard
if #available(iOS 9, *, *) {
storyboard = UIStoryboard(name: "Main", bundle: nil)
} else {
storyboard = UIStoryboard(name: "MainOld", bundle: nil)
}
let mainViewController = storyboard.instantiateInitialViewController()
window?.rootViewController = mainViewController
window?.makeKeyAndVisible()
return true
}
但是我在 Main.storyboard "UIStackView before iOS 9.0"
上遇到编译错误
我正在使用 Xcode 7 beta 5。
如何在 iOS 8 个支持的项目上使用 iOS 9 个相关功能 Swift 2 #availability check
您不能在 StoryBoard 中使用此类 #availability
功能。如果您想用 UIStackView
支持 iOS 8,您应该从代码中构建 UIStackView
,或者使用第三方的兼容库。喜欢 OAStackView or TZStackView.
我从 Apple Cocoa 开发者电子邮件列表中的 Quincey Morris 那里得到了答复。
默认
在故事板文件的文件检查器中为构建的设置是"deployment Target",即iOS 8,因此编译器会抛出错误。
如果我在使用 iOS 9 功能的故事板上将 "Build for" 设置更改为 iOS 9。没有错误,应用程序在 iOS 8 和 iOS 9 中运行。
我创建了两个故事板,一个用于 iOS 8,另一个用于 iOS 9 及以上。
对于 iOS 9 故事板,转到文件检查器并将最小目标设置为 iOS 9,将 iOS8 设置为 iOS 8。
然后在代码中,无论您在何处为该故事板创建初始视图控制器,请使用:
if #available(iOS 9.0, *) {
// create view controller from iOS 9 storyboard
} else {
//create view controller from iOS 8 storyboard
}
错误应该消失了。显然需要管理更多的代码,但你得到了你的原生 UIStack,当你放弃 iOS8 支持时,你仍然拥有功能齐全的 ios9 故事板
我有一个现有的 iOS 应用程序,它受 iOS 支持 8. 我只想为 iOS 添加新功能 9.
我为 iOS 9 创建了一个新的故事板,它使用了 iOS 9 的功能,如 UIStackView。根据设备 OS 版本实例化适当的故事板文件。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let storyboard: UIStoryboard
if #available(iOS 9, *, *) {
storyboard = UIStoryboard(name: "Main", bundle: nil)
} else {
storyboard = UIStoryboard(name: "MainOld", bundle: nil)
}
let mainViewController = storyboard.instantiateInitialViewController()
window?.rootViewController = mainViewController
window?.makeKeyAndVisible()
return true
}
但是我在 Main.storyboard "UIStackView before iOS 9.0"
上遇到编译错误我正在使用 Xcode 7 beta 5。
如何在 iOS 8 个支持的项目上使用 iOS 9 个相关功能 Swift 2 #availability check
您不能在 StoryBoard 中使用此类 #availability
功能。如果您想用 UIStackView
支持 iOS 8,您应该从代码中构建 UIStackView
,或者使用第三方的兼容库。喜欢 OAStackView or TZStackView.
我从 Apple Cocoa 开发者电子邮件列表中的 Quincey Morris 那里得到了答复。
默认 在故事板文件的文件检查器中为构建的设置是"deployment Target",即iOS 8,因此编译器会抛出错误。
如果我在使用 iOS 9 功能的故事板上将 "Build for" 设置更改为 iOS 9。没有错误,应用程序在 iOS 8 和 iOS 9 中运行。
我创建了两个故事板,一个用于 iOS 8,另一个用于 iOS 9 及以上。 对于 iOS 9 故事板,转到文件检查器并将最小目标设置为 iOS 9,将 iOS8 设置为 iOS 8。
然后在代码中,无论您在何处为该故事板创建初始视图控制器,请使用:
if #available(iOS 9.0, *) {
// create view controller from iOS 9 storyboard
} else {
//create view controller from iOS 8 storyboard
}
错误应该消失了。显然需要管理更多的代码,但你得到了你的原生 UIStack,当你放弃 iOS8 支持时,你仍然拥有功能齐全的 ios9 故事板