分享
三行代码  ›  专栏  ›  技术社区  ›  StackGU

按钮堆栈视图间距不工作-快速-编程

  •  1
  • StackGU  · 技术社区  · 1 周前

    我在viewcontroller中添加stackView的方式如下:

    addSubview(stackView)
        stackView.translatesAutoresizingMaskIntoConstraints = false
        stackView.anchor(top: nameLabel.bottomAnchor, leading: leadingAnchor, bottom: bottomAnchor, trailing: trailingAnchor)
        
        
        let emotionsButton = EmotionButton()
        emotionsButton.translatesAutoresizingMaskIntoConstraints = false
        let contentButton = ContentsButton()
        contentButton.translatesAutoresizingMaskIntoConstraints = false
        
        
        
        stackView.axis = .horizontal
        stackView.alignment = .center
        stackView.distribution = .equalCentering
        stackView.spacing = 8
        
        stackView.addArrangedSubview(emotionsButton)
        stackView.addArrangedSubview(contentButton)
        
        emotionsButton.widthAnchor.constraint(equalToConstant: 91).isActive = true
        contentButton.widthAnchor.constraint(equalToConstant: 91).isActive = true
        
        emotionsButton.heightAnchor.constraint(equalToConstant: 83).isActive = true
        contentButton.heightAnchor.constraint(equalToConstant: 83).isActive = true
    

    但我得到的结果并不是我想要的,这是我想要的:

    Stack Desired

    我得到的是:

    Stack I get

    3 回复  |  直到 1 周前
        1
  •  1
  •   Mojtaba Hosseini    1 周前

    UIStackView 尝试用其内容填充整个宽度。所以你有一些选择

    居中

    leading trailing


    虚拟视图

    另一个选择是添加。堆栈视图两侧的虚拟视图(内部),使它们具有 clear 让他们最后拥抱。所以。他们。可以。填充多余的空间。


    其他选项

        2
  •  1
  •   Edison Lo    1 周前

    如果要在stackview上执行此操作,则不需要相应地配置子视图(emotionsButton、contentButton)的heightAnchor或widthAnchor。。您只需配置 堆栈视图 ,并让它相应地调整子视图的大小。

    stackView.axis = .horizontal
    stackView.alignment = .center
    stackView.distribution = .equalCentering
    stackView.spacing = 8
    
    stackView.widthAnchor.constraint(equalToConstant: 91 * 2).isActive = true
    stackView.heightAnchor.constraint(equalToConstant: 83).isActive = true
    
    stackView.addArrangedSubview(emotionsButton)
    stackView.addArrangedSubview(contentButton)
    
        3
  •  1
  •   Won    1 周前

    将内容拥抱优先级更改为 .required 可能有用。

    stackView.setContentHuggingPriority(.required, for: .horizontal)