【发布时间】:2020-09-09 21:00:42
【问题描述】:
我有 2 个 UILabel 如下:
private lazy var titleLabel: UILabel = {
let label = UILabel()
label.textColor = Constants.mainFontColor.withAlphaComponent(0.7)
label.translatesAutoresizingMaskIntoConstraints = false
label.isUserInteractionEnabled = false
label.sizeToFit()
return label
}()
private lazy var valueLabel: UILabel = {
let label = UILabel()
label.textColor = Constants.mainFontColor
label.translatesAutoresizingMaskIntoConstraints = false
label.isUserInteractionEnabled = false
label.sizeToFit()
return label
}()
然后将这些标签放入 UIStackView:
private lazy var stackView: UIStackView = {
let stack = UIStackView(arrangedSubviews: [titleLabel, valueLabel])
stack.translatesAutoresizingMaskIntoConstraints = false
stack.axis = .horizontal
stack.spacing = 5
stack.alignment = .firstBaseline
addSubview(stack)
return stack
}()
然后我创建了几个实例,例如:
private lazy var flightNumber: FuelSheetHeaderField = {
return FuelSheetHeaderField(title: FuelSheetStringsField.flightNumber.title.localized,
value: viewModel.flightNumber, titleFontSize: 17, valueFontSize: 24)
}()
然后将它们放入单独的堆栈视图中:
private lazy var flightData: UIStackView = {
let stack = UIStackView(arrangedSubviews: [flightNumber, aircraftReg, dateTime, origin])
stack.axis = .horizontal
stack.distribution = .equalSpacing
stack.spacing = Constants.standardHorizontalStackSpacing
return stack
}()
标题标签的字体大小为 12,值的字体大小为 17。除了一个自定义为相应的字体大小为 17 和 2 的标签。我试图让所有元素沿着同一基线对齐。我添加了以下约束:
titleLabel.firstBaselineAnchor.constraint(equalTo: valueLabel.firstBaselineAnchor),
但是效果如下:
大多数堆栈元素都是对齐的,但您可以看到第一个字体较大的元素比第二个元素高。这让我有点发疯。如何修复它,使堆栈中的所有元素沿同一基线对齐。
【问题讨论】:
标签: swift uiview uistackview