使你的應用可以使用iOS接口環境的一組方法。swift
iOS接口環境包括諸如橫向和縱向尺寸、顯示比例和用戶界面習慣用法等。要訪問遵照此協議的對象的trait環境,請使用traitCollection
屬性。該協議還提供了一種當接口環境發生變化時被系統調用的可覆蓋方法。實現此方法做爲建立自適應iOS應用程序的一部分。app
有關trait collection的更多信息,請參閱UITraitCollection。有關在iOS中建立自適應界面的WWDC 2014演示文稿,請參閱使用UIKit構建自適應應用程序。iview
一個View Controller(UIViewController類或其子類的實例)或一個View(UIView類或其子類的實例)的trait collection。ide
var traitCollection: UITraitCollection { get }
複製代碼
view controllers和views都遵照UITraitEnvironment
協議。佈局
重要ui
直接使用
traitCollection
屬性。 不要重寫它。 不要提供自定義實現。spa
iOS接口環境發生變化時調用。code
func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?)
複製代碼
previousTraitCollection對象
接口環境改變以前的UITraitCollection對象。接口
當iOS接口環境發生變化時,系統會調用此方法。根據你的應用程序的需求,在view controller和view中實現此方法,以響應此類更改。例如,當iPhone從縱向旋轉到橫向時,你能夠調整view controller下子視圖的佈局。此方法的默認實現爲空。
在實現的開始階段,請調用super以確保視圖層次結構中較高的界面元素有機會首先調整其佈局。使用上與下面代碼相似:
- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
[super traitCollectionDidChange: previousTraitCollection];
if ((self.traitCollection.verticalSizeClass != previousTraitCollection.verticalSizeClass)
|| (self.traitCollection.horizontalSizeClass != previousTraitCollection.horizontalSizeClass)) {
// your custom implementation here
}
}
複製代碼