Swift-无法对齐具有不同字体大小的堆栈元素

问题描述

我有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),

但是效果如下:

enter image description here

大多数堆栈元素都对齐,但是您可以看到第一个字体较大的元素位于第二个之上。这让我有些疯狂。我该如何解决它,以便堆栈中的所有元素都沿着同一基线对齐。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)