gpt4 book ai didi

ios - 动态添加的 UIView 的自动布局

转载 作者:行者123 更新时间:2023-11-28 15:19:24 24 4
gpt4 key购买 nike

我需要一些关于如何为动态添加的 UILabel 添加约束的建议

假设我有一个名为 (A) 的 UIView 添加到 UIViewcontroller View 中,大小为 (screenwidth, 200)。在 View A 上,我已使用 super View 在其前缘和后缘上设置了自动调整大小掩码。

现在在运行时,我正在添加带有字符串中的字符的 UILabel。例如,如果字符串是“HELLO”,我将为 HELLO 中的每个字符以等间隔添加五个 UILabel。

当方向从纵向变为横向时,UILabel 的间距不均匀。我没有对 UILabel 设置任何约束,需要一些关于如何添加约束的建议。

除了约束之外,是否还有其他解决方案可以使 UILabel 在横向和纵向模式下均匀分布?

谢谢

最佳答案

我可以推荐使用 UIStackView。 Sweeper 的解决方案没有使用动态添加到屏幕,所以我想我会提供一个程序化的解决方案。

要动态添加这些,请使用以下示例。

首先:

@IBOutlet weak var containerView: UIView!

这应该是您描述中的 View A,并确保将其与 Storyboard联系起来。

要添加标签,我们首先向容器 View 添加堆栈 View :

let stackView = UIStackView()
stackView.distribution = .fillEqually
stackView.alignment = .fill
stackView.spacing = 15
stackView.autoresizingMask = [.flexibleLeftMargin,.flexibleRightMargin]
containerView.addSubview(stackView)
stackView.centerXAnchor.constraint(equalTo: (stackView.superview?.centerXAnchor)!, constant: 0).isActive = true
stackView.centerYAnchor.constraint(equalTo: (stackView.superview?.centerYAnchor)!, constant: 0).isActive = true
stackView.heightAnchor.constraint(equalTo: (stackView.superview?.heightAnchor)!, constant: 0).isActive = true
stackView.widthAnchor.constraint(equalToConstant: 200).isActive = true

您可以使用宽度 anchor 来获得您想要的内容。

然后当你想添加标签时,使用这个:

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 5, height: 5))
label.text = "E"
stackView.addArrangedSubview(label)

let labelTwo = UILabel(frame: CGRect(x: 0, y: 0, width: 5, height: 5))
labelTwo.text = "L"
stackView.addArrangedSubview(labelTwo)

//... And so on

堆栈 View 可以很容易地添加 subview 而没有太多限制。但是,您必须向堆栈 View 本身添加约束才能在屏幕上显示内容!

希望对您有所帮助。

关于ios - 动态添加的 UIView 的自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46284778/

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