這個系列的文章只是簡單地把開發過程中的一些技巧總結起來,方便以後查閱。
exclusiveTouch
exclusiveTouch是UIView的一個屬性。Exclusive是“獨家”的意思,所以這個方法的作用就是把某個UIView的觸碰事件設置為獨家事件,即如果多個設置了exclusivetouch的UIVIew被同時點擊,則只對一個事件作出反應。這個方法可以用於解決多個按鈕同時點擊造成的多事件響應問題。
attemptRotationToDeviceOrientation
這是UIViewController的一個靜態方法,用於喚起屏幕旋轉。當UIViewController的方向與屏幕的方向不一致時,使用這個方法可以讓UIViewController旋轉屏幕。使用這個方法一般用於應付坑爹的產品需求,在某個界面顯示是豎屏、而進入另一個界面則是橫屏的情況。
viewWillLayoutSubviews
這是UIViewController的一個方法,和viewDidLoad、viewWillAppear類似。這個方法在UIView調用layoutSubviews之後調用,作為UIViewController的子類,一般可以實現這個方法以重新調整界面。
之所以用這個方法,是因為在Storyboard中,我們一般都會以一定的大小顯示控件,當視圖被真正加載時,即在viewDidLoad中,我們的控件顯示的尺寸都是我們在Storyboard中對應的尺寸,即使實際屏幕與Storyboard中的屏幕尺寸不一致,還是會使用Storyboard中的大小。這樣造成的問題是控件未能及時初始化,特別是UICollectionView等需要根據視圖大小決定子視圖布局的控件,影響很大。所以在viewWillLayoutSubviews中對我們的控件進行重新調整才是正確的方法。
等比例排放視圖
如果需要讓幾個視圖橫向排列且等寬等距,可以通過設置它們之間的間距約束、它們的寬度相等約束來實現。
如果需要讓幾個已知寬度的視圖等距排列,有兩種方法。一種是在上面方法的基礎上在每個視圖內部中心放置新的視圖。另一種方法則是設置每個視圖對齊中心,並修改乘數(Multiplier)讓視圖偏移,並通過選中控件、按住option鍵、鼠標移到另一個控件上查看兩個視圖之間的距離這種方法檢驗乘數的正確性。
Constrain to margins
Storyboard中對視圖的約束一般會默認選上Constrain to margins,這意味著它與父視圖會有一定的偏移值。這個選項會造成我們設計與開發之間的偏差,如果需要高度自定義自己的視圖,則需要把這個約束去掉。