2016-06-28 33 views
0

我創建了一個UIViewController,其中UIStackView(垂直軸)包裹在UIScrollView中,該對象被固定到帶有自動佈局約束的根View的邊緣。編程式佈局:UIStackView對齊似乎不起作用

我也生成了一些UIButton s並將其添加到UIStackViewarranged subviews

我試圖無法中心對齊UIStackView中的UIButtons

我不確定我做錯了什麼。

下面的代碼:

import UIKit 

class ViewController: UIViewController { 
var scrollView: UIScrollView! 
var stackView: UIStackView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    view.backgroundColor = UIColor.whiteColor() 

    scrollView = UIScrollView() 
    scrollView.translatesAutoresizingMaskIntoConstraints = false 
    view.addSubview(scrollView) 

    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[scrollView]|", options: .AlignAllCenterX, metrics: nil, views: ["scrollView": scrollView])) 
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[scrollView]|", options: .AlignAllCenterX, metrics: nil, views: ["scrollView": scrollView])) 


    stackView = UIStackView() 
    stackView.translatesAutoresizingMaskIntoConstraints = false 
    stackView.axis = .Vertical 
    stackView.alignment = .Center 
    scrollView.addSubview(stackView) 

    scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[stackView]|", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: ["stackView": stackView])) 
    scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[stackView]|", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: ["stackView": stackView])) 

    for _ in 1 ..< 100 { 
     let vw = UIButton(type: UIButtonType.System) 
     vw.setTitle("Button", forState: .Normal) 
     stackView.addArrangedSubview(vw) 
    } 
} 

} 

回答

2

需要scrollViewstackView之間的額外的等寬限制。像這樣:

scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:[stackView(==scrollView)]", options: .AlignAllCenterX, metrics: nil, views: ["stackView": stackView, "scrollView": scrollView])) 

這是爲我做的。

0

如何:

stackView.Alignment = UIStackViewAlignment.Center 

+0

我已經這樣做了。我假設有些事我做錯了。 – kooldave98