iOS開發技巧(1)
這個系列的文章只是簡單地把開發過程中的一些技巧總結起來,方便以後查閱。 exclusiveTouchexclusiveTouch是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 marginsStoryboard中對視圖的約束一般會預設選上Constrain to margins,這意味著它與父視圖會有一定的位移值。這個選項會造成我們設計與開發之間的偏差,如果需要高度自訂自己的視圖,則需要把這個約束去掉。