ios - StackView 未以编程方式左对齐

标签 ios swift uistackview stackview

我以编程方式制作的 StackView 如下所示:

两个 subview :

三个 subview :

四个 subview :

这是我的代码:

    cameraButton.setImage(UIImage(named: "blueCamera"), for: .normal)
    cameraButton.addTarget(self, action: #selector(cameraTapped), for: .touchUpInside)
    cameraButton.widthAnchor.constraint(equalToConstant: 70.0).isActive = true
    calenderButton.setImage(UIImage(named: "calender"), for: .normal)
    calenderButton.addTarget(self, action: #selector(calanderTapped), for: .touchUpInside)
    calenderButton.widthAnchor.constraint(equalToConstant: 70.0).isActive = true

    stackView.frame = CGRect(x: 0, y: 0, width: scrollView.frame.size.width, height: scrollViewHeight)
    stackView.axis = .horizontal
    stackView.spacing = 5
    stackView.semanticContentAttribute = .forceLeftToRight
    stackView.alignment = .fill // .leading .firstBaseline .center .trailing .lastBaseline
    stackView.distribution = .equalSpacing // .fillEqually .fillProportionally .equalSpacing .equalCentering
    stackView.addArrangedSubview(calenderButton)
    stackView.addArrangedSubview(cameraButton)
    stackView.backgroundColor = UIColor(red: 0.161, green: 0.165, blue: 0.188, alpha: 1.00)
    scrollView.addSubview(stackView)

问题是什么: StackView 未将 subview 向左对齐。

我想要实现的目标:

我希望所有 subview 都向左对齐,我尝试使用 stackView.semanticContentAttribute = .forceLeftToRight 来实现此目的,但这似乎没有取得多大成果。

最佳答案

设置:

    stackView.alignment = .leading 

并删除这个:

    stackView.distribution = .equalSpacing

你的代码将是这样的:

    cameraButton.setImage(UIImage(named: "blueCamera"), for: .normal)
    cameraButton.addTarget(self, action: #selector(cameraTapped), for: .touchUpInside)
    cameraButton.widthAnchor.constraint(equalToConstant: 70.0).isActive = true
    calenderButton.setImage(UIImage(named: "calender"), for: .normal)
    calenderButton.addTarget(self, action: #selector(calanderTapped), for: .touchUpInside)
    calenderButton.widthAnchor.constraint(equalToConstant: 70.0).isActive = true

    stackView.frame = CGRect(x: 0, y: 0, width: scrollView.frame.size.width, height: scrollViewHeight)
    stackView.axis = .horizontal
    stackView.spacing = 5
    stackView.alignment = .leading    
    stackView.addArrangedSubview(calenderButton)
    stackView.addArrangedSubview(cameraButton)
    stackView.backgroundColor = UIColor(red: 0.161, green: 0.165, blue: 0.188, alpha: 1.00)
    scrollView.addSubview(stackView)

关于ios - StackView 未以编程方式左对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53410848/

相关文章:

ios - 如何在 Swift 3.0 中一段时间​​后插入警报

swift - 为什么 “if let” 语句中需要可选链接?

xcode - 无法使用命令行工具运行 Swift 代码

ios - 居中堆栈 View 元素而不填充它们

ios - 如何更改 UIStackView 的背景颜色?

ios - 在协议(protocol)扩展中将 nil 传递给具有可选的一般约束参数的函数

ios - iPad上显示的模态视图上不需要的SplitView

ios - 我已经开始在 Xcode 中获取 "error -1=ffffffffffffffff Command/usr/bin/codesign failed with exit code 1"

ios - 通过数组添加的 View 的约束

ios - React native - IOS 中的 Dev Settings 在哪里?如何更改服务器主机?