Swift UIStackView利用UIStackView的全宽

时间:2018-03-16 12:46:05

标签: ios swift uistackview

在上面的屏幕中,您可以看到我正在使用UIStackView垂直填充单选按钮。问题是当我使用UIStackView时,我的单选按钮没有使用stackV.alignment = .leading的全宽度,它显示标签为" dis..lified"而不是取消资格。

UISTackView代码

let ratingStackView : UIStackView = {

    let stackV = UIStackView()
    stackV.translatesAutoresizingMaskIntoConstraints = false
    stackV.backgroundColor = UIColor.yellow
    stackV.axis = .vertical
    stackV.distribution = .fillEqually
    stackV.alignment = .leading
    return stackV
}()

UIStackView的布局

func setupView(){
    view.addSubview(ratingStackView)

    ratingStackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true

    ratingStackView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor,constant: 8).isActive = true

    ratingStackView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true

    ratingStackView.heightAnchor.constraint(equalToConstant: 200).isActive = true

    //Add radio buttons to stackview
    for ratingButton in ratingRadioButtons{
        ratingStackView.addArrangedSubview(ratingButton)
    }        
}

我需要设置什么属性来使用全宽度你能告诉我我是Swift新手的单选按钮。我正在使用DLRadioButton

3 个答案:

答案 0 :(得分:5)

要使其正常工作,您需要在布局中进行以下更改:

1。UIStackView's alignment属性设为fill,即

stackV.alignment = .fill

2。UIButton's Horizontal Alignment设置为left,无论您在RadioButton文件中创建.xib还是通过代码

.xib中,您可以在界面中找到该属性:

enter image description here

如果您使用代码创建按钮,请使用以下代码行:

ratingButton.contentHorizontalAlignment = .left

如果您仍然面临这个问题,请告诉我。快乐的编码..

答案 1 :(得分:1)

保留alignment的默认值,即.fill - 这会在垂直于堆栈轴的方向上拉伸排列的视图。

实际上,我怀疑如果你使用.leading对齐并且没有指定嵌套控件的宽度,你会在运行时获得自动布局警告(可以在Xcode中的Visual Debugger中检查)。

答案 2 :(得分:0)

尝试按比例分配。

还有一件事要做:减少标签的内容拥抱优先级。