2016-12-05 18 views
2

どのようにプログラムで制約を複数のviews.Iと幅と等しい高さに等しく与えるには、自動レイアウトを介してプログラム的に等しい幅と高さの制約のための完璧な答えではありません。ios swiftで自動レイアウト等幅制約をプログラムで作成する方法は?

私のコードは以下のようになります。

var countNoOfViews:Int = 3 
@IBOutlet var viewForRow1: UIView! 

override func viewDidLoad() { 
     super.viewDidLoad() 
self.specialButtonViewLeft() 
} 

func specialButtonViewLeft(){ 

    for i in 0..<countNoOfViews{ 
     var customView:UIView! 
     customView = UIView(frame: CGRect.zero) 
     customView.translatesAutoresizingMaskIntoConstraints = false 
     viewForRow1.addSubview(customView) 

     let widthConstraint = NSLayoutConstraint(item: customView, attribute: .width, relatedBy: .equal,toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 20.0) 

     let topConstraint = NSLayoutConstraint(item: customView, attribute: .top, relatedBy: .equal,toItem: self.viewForRow1, attribute: .top, multiplier: 1.0, constant: 0) 

     let bottomConstraint = NSLayoutConstraint(item: customView, attribute: .bottom, relatedBy: .equal,toItem: self.viewForRow1, attribute: .bottom, multiplier: 1.0, constant: 0) 

     let leadingConstraint = NSLayoutConstraint(item: customView, attribute: .leading, relatedBy: .equal, toItem: self.viewForRow1, attribute: .leading, multiplier: 1, constant: customLeadingSpaceLeft) 

     customLeadingSpaceLeft = customLeadingSpaceLeft + customViewWidth 

     arrayLeftBtnConstraints.append(widthConstraint) 

     if i == 0{ 
      customView.backgroundColor = UIColor.red 
     }else if i == 1{ 
      customView.backgroundColor = UIColor.green 
     }else if i == 2{ 
      leftViewVal = customLeadingSpaceLeft 
      customView.backgroundColor = UIColor.black 
     } 
     customView.alpha = 0.50 
     viewForRow1.addConstraints([widthConstraint, leadingConstraint,topConstraint,bottomConstraint]) 
    } 
} 

私はプログラム的に等しい幅の制約を追加します。

+0

あなたは仕事を完了できましたか? –

答えて

2

これを試してみてください:

let widthConstraint = NSLayoutConstraint(item: customView, attribute: .width, relatedBy: .equal, toItem: viewForRow1, attribute: .width, multiplier: 0.25, constant: 0.0) 

multiplier: 0.25customViewの幅は、親ビュー、viewForRow1の1/4になることを意味します。使用してアンカーでは

1):

+0

ありがとうございます。私はスーパービューに複数のビューを等分幅を分割しています。別のものは、プログラムで自動レイアウト制約の幅をポートレート - 30と風景 - 40幅 –

0

あなたはそれを行うための3つの方法があります

view.widthAnchor.constraint(equalTo: otherView.widthAnchor, multiplier: 1.0).isActive = true

2)ビジュアル形式:

簡単な例 - "H:|[otherView]-[view(==otherView)]|"

3 ) "オールドスクール"の制約:

NSLayoutConstraint(item: #view, attribute: .width, relatedBy: .equal, toItem: #otherView, attribute: .width, multiplier: 1.0, constant: 0.0).isActive = true

誰かを助けてくれることを願っています。

関連する問題