UITraitEnvironment Protocol

使你的應用可以使用iOS接口環境的一組方法。swift

概述

iOS接口環境包括諸如橫向和縱向尺寸、顯示比例和用戶界面習慣用法等。要訪問遵照此協議的對象的trait環境,請使用traitCollection屬性。該協議還提供了一種當接口環境發生變化時被系統調用的可覆蓋方法。實現此方法做爲建立自適應iOS應用程序的一部分。app

有關trait collection的更多信息,請參閱UITraitCollection。有關在iOS中建立自適應界面的WWDC 2014演示文稿,請參閱使用UIKit構建自適應應用程序iview

專題

1、訪問Trait Collection

var traitCollection: UITraitCollection

一個View Controller(UIViewController類或其子類的實例)或一個View(UIView類或其子類的實例)的trait collection。ide

聲明
var traitCollection: UITraitCollection { get }
複製代碼
說明

view controllers和views都遵照UITraitEnvironment協議。佈局

重要ui

直接使用traitCollection屬性。 不要重寫它。 不要提供自定義實現。spa

2、響應接口環境的變化

func traitCollectionDidChange(UITraitCollection?)

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
    }
}
複製代碼
相關文章
相關標籤/搜索