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

标签 ios swift autolayout

我需要一些关于如何为动态添加的 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/

相关文章:

ios - Xcode:删除对未显示为选项的文件的引用

ios - PDFKit PDFThumbnailView 缩略图不居中

ios - 如何从 RPScreenRecorder.shared().startCapture 中的 CMSampleBuffer 获取视频帧?

ios - 距顶部布局指南和底部布局指南的距离相等

ios - 约束不随设备方向变化而更新

ios - 取消选中后 UIScrollView 不滚动 "Adjust scroll view insets"xcode 6

ios - @selector 的多个参数

ios - TestFlight Beta 应用程序审查

ios - 在 IOS 上使用 Quartz 2d 以编程方式绘制线条动画

swift - 在启动屏幕关闭后立即显示一个特定的 View Controller