web-dev-qa-db-ja.com

Swift 3- @ iOS 9でのみ利用可能で、iOS10では利用できません

私はこれが可能かどうかを見ようとしています。 UICollectionViewFlowLayoutのestimatedItemSizeの設定は、iOS9ではあまりうまく機能しないようです。iOS10では完全に正常に機能します。したがって、iOS9に対してのみsizeForItemAt ..メソッドを実装することを考えています。@ availableを使用してそれを行う方法はありますか?誰かが光を当てることができれば本当に役に立ちます。

12
Kesava

IOS 11のバージョンが低いときにコードを実行したかったのですが、次のようにしました。

if #available(iOS 11, *) {
  // This is probably empty
} else {
  // This code will only be executed if the version is < iOS 11
}

これは最もクリーンなソリューションではありませんが、より良い方法を見つけることができず、その役割を果たします。 ????

12
Jan Schlorf

え?として行う ドキュメントは行うように言う

@available(iOS, obsoleted: 10.0)

または

@available(iOS, introduced: 9.0, obsoleted: 10.0)
6
user28434

IOS 10よりも低いバージョンlowerでのみ実行されるコードを実行する場合は、次の構文を使用できます。

if #available(*, iOS 9) {
    // Code here will only run on iOS 9 and below.
}
1
Duncan Babbage
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
}
1
Parth Adroja