iOS - UILayoutGuide的基本使用
UILayoutGuide類定義了可以通過自動佈局互動的矩形區域。使用佈局指南來替換可能已建立的虛擬檢視,以在使用者介面中表示檢視間間距或封裝。
傳統上,有一些Auto Layout技術需要虛擬檢視。虛擬檢視是一個空檢視,它沒有自己的任何可視元素,只用於在檢視層次結構中定義一個矩形區域。例如,如果要使用約束來定義檢視之間的空白空間的大小或位置,則需要使用虛擬檢視來表示該空間。如果要將一組物件居中,則需要一個虛擬檢視來包含這些物件。類似地,虛擬檢視可以用於包含和封裝您的部分使用者介面。虛擬檢視可以將大型,複雜的使用者介面分解成自包含的模組化塊。當正確使用時,它們可以大大簡化您的Auto Layout約束邏輯。
在檢視層次結構中新增虛擬檢視會產生大量成本。首先,有建立和維護檢視本身的成本。第二,虛擬檢視是檢視層次結構的完整成員,這意味著它為層次結構執行的每個任務增加了開銷。最糟糕的是,不可見的虛擬檢視可以攔截用於其他檢視的訊息,導致很難找到的問題。
該UILayoutGuide課程旨在執行先前由虛意見執行的所有任務,但這樣做在一個更安全,更有效的方式。佈局指南不定義新檢視。它們不參與檢視層次結構。相反,他們只需在自己檢視的座標系中定義一個矩形區域,可以與自動佈局進行互動。
建立佈局指南
要建立佈局指南,必須執行以下步驟:
例項化新的佈局指南。
通過呼叫檢視中新增布局引導到檢視
addLayoutGuide:
的方法。
使用自動佈局定義佈局指南的位置和大小。
您可以使用這些指南來定義佈局中元素之間的間距。
以下示例顯示用於在一系列檢視之間定義等間距的佈局指南。
UILayoutGuide *space1 = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:space1]; UILayoutGuide *space2 = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:space2]; [space1.widthAnchor constraintEqualToAnchor:space2.widthAnchor].active = YES; [self.saveButton.trailingAnchor constraintEqualToAnchor:space1.leadingAnchor].active = YES; [self.cancelButton.leadingAnchor constraintEqualToAnchor:space1.trailingAnchor].active = YES; [self.cancelButton.trailingAnchor constraintEqualToAnchor:space2.leadingAnchor].active = YES; [self.clearButton.leadingAnchor constraintEqualToAnchor:space2.trailingAnchor].active = YES;
佈局指南也可以作為一個黑盒子,包含許多其他檢視和控制元件。這允許您封裝檢視的一部分,將佈局打破為模組化塊。
UILayoutGuide *container = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:container]; // 佈局容器的內容 [self.label.lastBaselineAnchor constraintEqualToAnchor:self.textField.lastBaselineAnchor].active = YES; [self.label.leadingAnchor constraintEqualToAnchor:container.leadingAnchor].active = YES; [self.textField.leadingAnchor constraintEqualToAnchor:self.label.trailingAnchor constant:8.0].active = YES; [self.textField.trailingAnchor constraintEqualToAnchor:container.trailingAnchor].active = YES; [self.textField.topAnchor constraintEqualToAnchor:container.topAnchor].active = YES; [self.textField.bottomAnchor constraintEqualToAnchor:container.bottomAnchor].active = YES; // 設定外部約束。 UILayoutGuide *margins = self.view.layoutMarginsGuide; [container.leadingAnchor constraintEqualToAnchor:margins.leadingAnchor].active = YES; [container.trailingAnchor constraintEqualToAnchor:margins.trailingAnchor].active = YES; [container.topAncor constraintEqualToAnchor:self.topLayoutGuide.bottomAnchor constant:20.0].active = YES;
相關文章
- iOS UIScrollView的基本使用iOSUIView
- iOS NSOperation的基本使用iOS
- iOS WKWebView 基本使用iOSWebView
- iOS 鑰匙串的基本使用iOS
- iOS Core Motion基本使用iOS
- IOS CoreLocation中CLLocationManager類的基本使用iOS
- iOS開發之使用Git的基本使用(二)iOSGit
- iOS開發之使用Git的基本使用(一)iOSGit
- Linux iostat命令基本使用LinuxiOS
- iOS開發-WKWebView的介紹與基本使用iOSWebView
- iOS CocoaPods簡介及基本使用iOS
- iOS開發- UILabel的基本介紹與使用iOSUI
- iOS開發-列表檢視的基本介紹與使用iOS
- iOS UI-表格控制器(UITableView)-基本使用iOSUIView
- iOS 元件化開發(一):遠端私有庫的基本使用iOS元件化
- 是時候瞭解一下 UILayoutGuide 了GUIIDE
- iOS UIView基本動畫iOSUIView動畫
- Vuex的基本使用Vue
- mongoose的基本使用Go
- mysqli的基本使用MySql
- mybatis的基本使用MyBatis
- RecyclerView 的基本使用View
- Bootstrap 的基本使用boot
- github的基本使用Github
- jQuery的基本使用jQuery
- GCD的基本使用GC
- Promise的基本使用Promise
- pymongo的基本使用Go
- pymssql的基本使用SQL
- 示波器的基本使用:
- luarocks 的基本使用
- git的基本使用Git
- 執行緒和程式基礎以及多執行緒的基本使用(iOS)執行緒iOS
- OpenCV (iOS)基本繪圖(5)OpenCViOS繪圖
- iOS系統相簿基本操作iOS
- ios基本類庫(偏swift)iOSSwift
- ts + hooks 的基本使用Hook
- Nifi:nifi的基本使用Nifi