我在界面構建器中使用了類大小,爲不同大小定義略有不同的設計。XCode 6 - iOS 8:以編程方式檢查視圖是否安裝
我的觀點之一是沒有安裝特定的大小。這符合預期,但現在我想以編程方式能夠判斷該視圖是否已安裝。無論是否安裝,它看起來像視圖從來沒有零,我看不到任何isInstalled標誌來檢查。
這樣做的正確方法是什麼?
我在界面構建器中使用了類大小,爲不同大小定義略有不同的設計。XCode 6 - iOS 8:以編程方式檢查視圖是否安裝
我的觀點之一是沒有安裝特定的大小。這符合預期,但現在我想以編程方式能夠判斷該視圖是否已安裝。無論是否安裝,它看起來像視圖從來沒有零,我看不到任何isInstalled標誌來檢查。
這樣做的正確方法是什麼?
這並不是一個很好的解決方案,但我沒有找到一個更好的尚未:
的docs狀態,「對於卸載的視圖運行時的對象仍然是創建然而,視圖和任何相關約束不會添加到視圖層次結構中,並且視圖具有nil的超級視圖屬性「。
因此,對有效的超級視圖進行測試是一種解決方案,但我發現它必須很晚 - 在viewDidAppear
。例如,超級視圖在viewWillAppear
中仍然爲零。
從蘋果文檔:Installing and Uninstalling Views for a Size Class
用於卸載視圖運行時對象是否仍然創建。但是,視圖和任何相關約束不會添加到視圖層次結構中,並且視圖具有nil的超級視圖屬性。這與隱藏不同。一個隱藏的視圖和任何相關的約束一樣在視圖層次中。
您可以通過評估PossiblyUninstalledView.superView != nil
進行檢查。如果確實如此,那麼該課程已正確安裝。
您可以對UIView進行擴展,並檢查視圖是否具有超級視圖。如果它已安裝,它將返回true,如果不是,則它將返回false。
extension UIView {
func isInstalled() -> Bool{
return (self.superview != nil) ? true : false
}
}