iOS 8 で導入された新しいメソッドを実装しようとしviewWillTransitionToSize
ています (他のすべての回転メソッドは廃止されました)。実行する必要がある多くのクリーンアップ タスクがあり、新しいブロックへの「移行」時に呼び出すためにdidRotateFromInterfaceOrientation
割り当てることができるブロックが表示されないため、現在の同等物が何であるかを知りたいです。UIViewControllerTransitionCoordinator
サイズ仕上げ。ありがとう。
62108 次
7 に答える
72
奇妙な答えのSwiftバージョン
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animateAlongsideTransition({ (UIViewControllerTransitionCoordinatorContext) -> Void in
let orient = UIApplication.sharedApplication().statusBarOrientation
switch orient {
case .Portrait:
println("Portrait")
// Do something
default:
println("Anything But Portrait")
// Do something else
}
}, completion: { (UIViewControllerTransitionCoordinatorContext) -> Void in
println("rotation completed")
})
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
}
于 2015-03-10T08:12:33.433 に答える
10
iOS 10.3 & スウィフト 3
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: { (_) in
let orient = newCollection.verticalSizeClass
switch orient {
case .compact:
print("Lanscape")///Excluding iPads!!!
default:
print("Portrait")
}
}, completion: { _ in
print("rotation completed")
})
super.willTransition(to: newCollection, with: coordinator)
}
于 2017-04-11T12:00:29.990 に答える
7
Swift 3で受け入れられた答え:
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animate(alongsideTransition: { (_) in
let orient = UIApplication.shared.statusBarOrientation
switch orient {
case .portrait:
print("Portrait")
// Do something
default:
print("Anything But Portrait")
// Do something else
}
}, completion: { (UIViewControllerTransitionCoordinatorContext) -> Void in
print("rotation completed")
})
super.willTransition(to: newCollection, with: coordinator)
}
それは私にとってはうまくいきます
于 2016-11-18T16:34:57.313 に答える
3
[[UIApplication sharedApplication] statusBarOrientation]
iOS9 では非推奨です。さまざまなデバイスのUITraitCollectionに対してテストする必要があります。
override func willTransitionToTraitCollection(newCollection: UITraitCollection, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
if newCollection.containsTraitsInCollection(UITraitCollection(verticalSizeClass: .Regular)) {
...
}
}
于 2015-10-19T12:50:22.247 に答える