Ios 如何使用“自动布局”按以下方式布局两个标签?
我有两个标签,如果它们的总宽度不太大,它们应该被放置在一行中,如下图所示。(小于屏幕宽度)。Ios 如何使用“自动布局”按以下方式布局两个标签?,ios,swift,autolayout,Ios,Swift,Autolayout,我有两个标签,如果它们的总宽度不太大,它们应该被放置在一行中,如下图所示。(小于屏幕宽度)。 . 或者,它们应该放在两行中。(它们不能放在一条线上) 是否可以在不使用动态计算标签宽度而仅使用自动布局的情况下实现此功能 提前感谢。为了获得更好的方式,您可以使用水平或垂直对齐的UIStackview private static let dynamicLabel1: UILabel = { let label = UILabel() label.textAlign
. 或者,它们应该放在两行中。(它们不能放在一条线上) 是否可以在不使用动态计算标签宽度而仅使用自动布局的情况下实现此功能
提前感谢。为了获得更好的方式,您可以使用水平或垂直对齐的UIStackview
private static let dynamicLabel1: UILabel = {
let label = UILabel()
label.textAlignment = .center
label.numberOfLines = 0
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .black
return label
}()
private static let dynamicLabel2: UILabel = {
let label = UILabel()
label.textAlignment = .center
label.numberOfLines = 0
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .black
return label
}()
func addStackview() {
let stackView = UIStackView()
stackView.axis = .vertical
stackView.distribution = .fill
stackView.spacing = 2
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.addArrangedSubview(dynamicLabel1)
stackView.addArrangedSubview(dynamicLabel2)
}
单独使用autolayout似乎不可行。若您不想基于代码中的计算创建视图,那个么完成类似操作的唯一方法可能是UICollectionView 这可能有点过头了,但要做到这一点,唯一的方法似乎是使用垂直滚动方向的集合视图(如果它始终适合屏幕,您可以关闭滚动和反弹) 集合视图单元格的唯一元素是UILabel,对于此单元格的宽度,我建议从这里使用答案(或者只使用UICollectionViewFlowLayout.automaticSize,如果是为iOS 10.0或更高版本开发的,此答案可能对这种情况有帮助:)
祝你好运 您可以使用水平堆栈视图来实现它。不,直接实现是不可能的。您提出的任何纯自动布局解决方案都是令人讨厌的。因为标签可以分为两个轴。水平和垂直。因此,需要设置两组约束。真的,不要。我认为collectionViews是正确的方法。