2016-10-20 35 views
0

我有這種情況:使用期自動佈局約束編程

enter image description here

我想這一點:

黑色的觀點是,在紫視圖之間X距離,如果我點擊在紫光我按鈕查看紫視圖的高度降低(或增加),我希望黑視圖處於紫視圖之間相同的X距離。 爲此,我寫這樣的代碼:

對於按鈕事件增加或減少紫色的視圖我用這個方法:

@IBAction func tapOpenButton(){ 

     self.altezza.constant = self.altezza.constant + 20 

    } 
    @IBAction func tapCloseButton(){ 

     self.altezza.constant = self.altezza.constant - 20 

    } 

其中altezzaNSLayoutConstraint

的兩個視圖都處於scrollview和我通過代碼設置約束:

var newView = blackView 
    var view = violetView 
     let horizontalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0) 

      let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: 120) 
         let widthConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100) 
      let heightConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100) 

     self.altra.addConstraints([horizontalConstraint,verticalConstraint, widthConstraint, heightConstraint]) 

altra是兩個視圖都是滾動視圖

我的問題是,當我減少或增加紫羅蘭色的高度時,紫色視圖和黑色視圖之間的距離不一樣,特別是,例如,當我增加紫色視圖的高度時,紫羅蘭色的視圖在黑色視圖下。 我是代碼自動佈局的新手。 你能幫我嗎?

回答

0

檢查這是否到位您heightConstaint

let heightConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100) 
0

而是由centerY釘扎的意見,集黑欣賞到紫色的有餘量的底部的頂部。

let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 10)