2016-02-24 62 views
0

好吧,我是Swift編程語言和IOS平臺的新手,但是我在其他平臺(如Android/WP/Xamarin)的移動開發方面有很強的背景,所以我決定只是潛入並從自動佈局開始學習佈局系統。爲什麼這個視圖在垂直軸對齊時水平居中

這裏我試圖水平放置一個視圖,並使用自動佈局API通過PureLayout將其與屏幕底部對齊。當我將視圖設置爲與它的超視圖的水平軸對齊時,這就是我得到的結果。

代碼

override func updateViewConstraints() { 
    if(!didSetupConstraints) 
    { 

     blackView.autoPinToBottomLayoutGuideOfViewController(self, withInset: 10) 
     blackView.autoSetDimensionsToSize(CGSize(width:50,height: 50)) 
     blackView.autoAlignAxisToSuperviewAxis(.Horizontal) 


     didSetupConstraints=true 
    } 

    super.updateViewConstraints() 
    } 

結果

enter image description here

然而當我設置對齊於垂直軸我得到所需的最終結果

代碼的視圖

override func updateViewConstraints() { 
    if(!didSetupConstraints) 
    { 

     blackView.autoPinToBottomLayoutGuideOfViewController(self, withInset: 10) 
     blackView.autoSetDimensionsToSize(CGSize(width:50,height: 50)) 
     blackView.autoAlignAxisToSuperviewAxis(.Vertical) 


     didSetupConstraints=true 
    } 

    super.updateViewConstraints() 
    } 

結果

enter image description here

即使我得到了我想要的,我沒有感覺良好,沒有正確理解爲什麼它得到了在中心設置水平排列的出發結果該視圖與超視圖的垂直軸對齊。所以有人可以向我解釋對齊軸的整個概念以及它們在自動佈局中的工作方式。提前致謝。

回答

1

水平居中並對齊到垂直軸是一回事。

縱軸是一個假想的垂直線,位於視圖左右邊緣之間的中心。所以如果一個視圖與它對齊,視圖將被定位在沿着該垂直線的任何位置,導致視圖被水平輸入。

Pure Layout的源代碼還有一個定義,並顯示它們如何映射到常規自動佈局(如果有幫助)。

/** A vertical line equidistant from the view's left and right edges. */ 
ALAxisVertical = NSLayoutAttributeCenterX, 
/** A horizontal line equidistant from the view's top and bottom edges. */ 
ALAxisHorizontal = NSLayoutAttributeCenterY, 
+0

好吧,我還沒有檢查源,但我想知道是否這是它映射到。非常感謝解釋! –