gpt4 book ai didi

ios - 在水平 UIStackView 的每一端布局两个 UILabel

转载 作者:行者123 更新时间:2023-11-29 00:07:36 25 4
gpt4 key购买 nike

我试图在水平 UIStackView 中布置两个 UILabel 但我无法让它工作。如您所见,label2(红色)没有使用 label1 的剩余宽度。

enter image description here

这是您可以在 Playground 中添加的代码:

import UIKit
import PlaygroundSupport

let view = UIView(frame: CGRect(x: 0, y: 0, width: 400, height: 100))
view.backgroundColor = .green

let labelStackView = UIStackView()

labelStackView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
labelStackView.frame = view.bounds

view.addSubview(labelStackView)

labelStackView.distribution = .equalSpacing
labelStackView.alignment = .lastBaseline
labelStackView.spacing = 10

let label1 = UILabel()
label1.backgroundColor = .blue
label1.numberOfLines = 0
label1.text = "Hej Hej Hej"

let label2 = UILabel()
label2.backgroundColor = .red
label2.numberOfLines = 0
label2.text = "Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej"
label2.textAlignment = .right

labelStackView.addArrangedSubview(label1)
labelStackView.addArrangedSubview(label2)

PlaygroundPage.current.liveView = view

最佳答案

正如评论者所指出的,您需要调整标签的内容拥抱或压缩阻力,因为它们将默认为相同的值,从而导致自动布局为它们提供相同的优先级和间距。您还需要将堆栈 View 的 distribution 更改为 fillProportionally。以下对我有用:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 400, height: 100))
view.backgroundColor = .green

let labelStackView = UIStackView()

labelStackView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
labelStackView.frame = view.bounds

view.addSubview(labelStackView)

labelStackView.distribution = .fillProportionally
labelStackView.alignment = .lastBaseline
labelStackView.spacing = 10

let label1 = UILabel()
label1.backgroundColor = .blue
label1.numberOfLines = 0
label1.text = "Hej Hej Hej"
label1.setContentHuggingPriority(UILayoutPriority(1000), for: .horizontal)

let label2 = UILabel()
label2.backgroundColor = .red
label2.numberOfLines = 0
label2.text = "Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej"
label2.textAlignment = .right

labelStackView.addArrangedSubview(label1)
labelStackView.addArrangedSubview(label2)

PlaygroundPage.current.liveView = view

关于ios - 在水平 UIStackView 的每一端布局两个 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47596004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com