Childview宽度锚在stackView中不起作用

Posted

技术标签:

【中文标题】Childview宽度锚在stackView中不起作用【英文标题】:Childview width anchor is not working inside stackView 【发布时间】:2018-04-11 12:06:32 【问题描述】:

我试图在 Stackview 中拥有最多 3 个视图,并且所有子视图都应该居中对齐 `

     for _ in array
        if(stackView.subviews.count != 3)
            let image : UIImageView = UIImageView()
            image.backgroundColor = UIColor.orange
            image.heightAnchor.constraint(equalToConstant:30).isActive=true
            image.widthAnchor.constraint(equalToConstant:30).isActive=true
            image.layer.cornerRadius=15
            stackView.addArrangedSubview(image)
        

` stackview 对齐居中,分布居中

【问题讨论】:

【参考方案1】:

如果 stackView 有一个 centerX 约束,没有前导和尾随约束以使其根据子元素的大小进行拉伸,则可以实现这一点

    let sta = UIStackView()

    sta.translatesAutoresizingMaskIntoConstraints = false

    sta.distribution = .fill

    sta.axis = UILayoutConstraintAxis.horizontal

    self.view.addSubview(sta)

    sta.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive=true

    sta.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 100).isActive=true

    sta.heightAnchor.constraint(equalToConstant:30).isActive=true

    for _ in 0...10 

            let image : UIImageView = UIImageView()
            image.translatesAutoresizingMaskIntoConstraints = false
            sta.addArrangedSubview(image)
            image.backgroundColor = UIColor.blue
            image.heightAnchor.constraint(equalToConstant:30).isActive=true
            image.widthAnchor.constraint(equalToConstant:50).isActive=true
            image.layer.cornerRadius=15



    

【讨论】:

谢谢你!有效。我的错误是我在故事板中有宽度限制的堆栈视图

以上是关于Childview宽度锚在stackView中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ScrollView -> ChildView 没有调整到约束

带有 StackView 和固定页脚的 ScrollView

Stackview inside 其他stackview宽度问题

非附加元素宽度在 Chrome 中不起作用

自定义自动播放进度条 - 动态宽度属性 - 在铬中不起作用

宽度 100% 和高度 100% 在 chrome 中不起作用