我想看看这是否可行。看起来像设置UICollectionViewFlowLayout的estimatedItemSize在ios 9中工作得不太好。它的工作方式非常好ios 10.所以我正在考虑为ios 9实现sizeForItemAt ..方法。无论如何使用@available?如果有人可以解决问题,那将会非常有用。
答案 0 :(得分:11)
我希望在版本低于iOS 11时执行代码,这是我如何做到的:
if #available(iOS 11, *) {
// This is probably empty
} else {
// This code will only be executed if the version is < iOS 11
}
这不是最干净的解决方案,但我无法找到更好的方法并且能够完成它的工作。
答案 1 :(得分:6)
嗯?做docs say to do:
@available(iOS, obsoleted: 10.0)
或者
@available(iOS, introduced: 9.0, obsoleted: 10.0)
答案 2 :(得分:1)
let systemVersion = UIDevice.currentDevice().systemVersion
println("iOS\(systemVersion)")
if systemVersion == 9.0 {
//Do Something
}
您可以使用以下内容:
@available(iOS 10.0, *)
private func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void) {
logParklee.verbose("willPresentNotification")
}
或
if #available(iOS 10, *) {
// use UIStackView
} else {
// show sad face emoji
}
或
guard #available(iOS 9, *) else {
return
}
或
@available(iOS 7, *)
func iOS7Work() {
// do stuff
if #available(iOS 8, *) {
iOS8Work()
}
}
@available(iOS 8, *)
func iOS8Work() {
// do stuff
if #available(iOS 9, *) {
iOS9Work()
}
}
@available(iOS 9, *)
func iOS9Work() {
// do stuff
}
答案 3 :(得分:1)
如果您要执行仅针对低于iOS 10版本的代码运行,则可以使用以下语法:
if #available(*, iOS 9) {
// Code here will only run on iOS 9 and below.
}