ios - 如何检查 UILabel 的当前字体大小?

标签 ios swift uikit

我有 3 个 UILabels,我想为它们设置相同的字体(所有 3 种可能性中最小的一个)。问题是什么?我不知道如何检查当前字体 - 每个 UILabels 使用 Autoshrink,最小字体比例和行数等于 0。UILabels 的文本设置在 ViewDidLoad() 方法(可能的标签文本有多种组合)。

我尝试使用 UILabel.font.pointSize 属性(在 viewDidAppear() 方法中调用)获取当前字体大小,然后比较它们。问题是 UILabel.font.pointSize 返回的不是 UILabel 文本字体大小的当前值(在 Autoshrink 完成后),而是返回 Storyboard中设置的值。

我完全没有想法,所以感谢您的帮助!

你好,约翰

最佳答案

使用这个扩展

extension String {

       func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {
            let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
            let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)

            return ceil(boundingBox.height)
        }
}

获取高度

height = strDesc.height(withConstrainedWidth: UIScreen.main.bounds.size.width - 160, font: UIFont.systemFont(ofSize: 14.0))

关于ios - 如何检查 UILabel 的当前字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52929271/

相关文章:

ios - 每天早上特定时间快速后台执行

ios - 如何确定 CGImage 每个像素的组件数?

html - 导航栏不改变颜色

ios - 基于 subview 自动设置容器 View 的高度

iOS - 类型 'DispatchQueue' 没有成员 'GlobalAttributes'

arrays - 多个 Firestore 快照相互覆盖

ios - 调整 UICollectionViewCell 的大小

ios - 需要按钮多次重复相同的功能

ios - 在 IOS Ionic 2 上打开外部 URL

ios - 进度 View 未更新