如何缩小字体大小以适应stackview,但在整个stackview中保持相同的字体大小

如何缩小字体大小以适应stackview,但在整个stackview中保持相同的字体大小,stackview,swift,uistackview,Stackview,Swift,Uistackview,如何缩小字体大小以适合3个项目?需要注意的是,Stackview中所有视图的字体大小都应该相同 请看下面的问题。“我的订单”选项卡的字体比Stackview的其余部分小 我想要实现什么? 在Stackview中以相同的字体大小均匀分布所有项目 我已经试过什么了? 在标签上设置以下属性 在Stackview上设置以下属性 谢谢您的建议。您是否尝试过使用Fill?这将使两个项目的大小相等 我解决这个问题的方法是根据标签中的字符数计算每个项目在堆栈视图总宽度中所占的百分比,并使用该信息在标签上设置宽

如何缩小字体大小以适合3个项目?需要注意的是,Stackview中所有视图的字体大小都应该相同

请看下面的问题。“我的订单”选项卡的字体比Stackview的其余部分小

我想要实现什么? 在Stackview中以相同的字体大小均匀分布所有项目

我已经试过什么了? 在标签上设置以下属性

在Stackview上设置以下属性


谢谢您的建议。

您是否尝试过使用Fill?这将使两个项目的大小相等

我解决这个问题的方法是根据标签中的字符数计算每个项目在堆栈视图总宽度中所占的百分比,并使用该信息在标签上设置宽度约束。大概是这样的:

let totalCount = labels(into: 0) { $0 += $1.text.count }
labels.forEach { label in
    let widthRatio = CGFloat(label.text.count) / CGFloat(totalCount)
    label.widthAnchor.constraint(equalTo: label.superview!.widthAnchor, multiplier: widthRatio).isActive = true
}
 stackView.axis = .horizontal
    stackView.distribution = .equalSpacing
    stackView.alignment = .center
    stackView.spacing = 16.0
let totalCount = labels(into: 0) { $0 += $1.text.count }
labels.forEach { label in
    let widthRatio = CGFloat(label.text.count) / CGFloat(totalCount)
    label.widthAnchor.constraint(equalTo: label.superview!.widthAnchor, multiplier: widthRatio).isActive = true
}