2017-06-01 62 views
-1

我正在擴展桌子電池平等關係,我的算法如下:是有一種方法來創建約束大於或通過代碼

  1. 我創建了兩個觀點。
  2. 創建第二個視圖的高度約束,將它作爲IBOutlet拖到我的單元格中。
  3. 選中單元格後,會更改所選單元格的狀態。

class ExpandableCell: UITableViewCell { 

    @IBOutlet weak var expandableCellHeightConstraint: NSLayoutConstraint! 

    @IBOutlet weak var expandableView: UIView! 

    var isExpanded:Bool = false 
    { 
     didSet 
     { 
      if !isExpanded { 
       self.expandableCellHeightConstraint.constant = 0.0 

      } else { 
       self.expandableCellHeightConstraint.constant = 120 
      } 
     } 
    } 
} 

一切都很好,但我想我的第二個觀點調整大小有關內部內容。

這裏是我的約束:

enter image description here

所以,我的問題是:

什麼是寫不嚴格值self.expandableCellHeightConstraint.constant最好的方法是什麼?其實我想寫點像self.expandableCellHeightConstraint.constant >= 120,但據我所知這是不可能的。

+0

NSLayoutConstraint具有可以設置爲「greaterThanOrEqual」的「關係」屬性。 –

+0

是的,但它是隻讀的,根據文檔 – dand1

+0

好的,那麼你必須在創建約束時設置它:'NSLayoutConstraint(...,relatedBy:greaterThanOrEqual,...)' –

回答

4

作爲Martin R建議,你可以創建一個這樣的代碼中的高度約束:

let heightConstraint = NSLayoutConstraint(
     item: yourExpandableView, 
     attribute: .height, 
     relatedBy: .greaterThanOrEqual, 
     toItem: nil, 
     attribute: .notAnAttribute, 
     multiplier: 1.0, 
     constant: 120 
) 

或者,你可以做這樣的:

let heightConstraint = yourExpandableView.heightAnchor.constraint(greaterThanOrEqualToConstant: 120) 

然後你就可以將其isActive屬性設置爲無論何時需要啓用/禁用此約束,都爲true或false。您可能還希望將此約束作爲該類的屬性,因爲約束將成爲零,一旦它們的屬性isActive設置爲false。

我希望這有幫助!

相關問題