Swift 3 - @仅适用于ios 9而非ios 10

时间:2016-11-22 11:12:47

标签: swift uicollectionview swift3

我想看看这是否可行。看起来像设置UICollectionViewFlowLayout的estimatedItemSize在ios 9中工作得不太好。它的工作方式非常好ios 10.所以我正在考虑为ios 9实现sizeForItemAt ..方法。无论如何使用@available?如果有人可以解决问题,那将会非常有用。

4 个答案:

答案 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.
}