gpt4 book ai didi

ios - 如何在 iOS 7.0 或更高版本中获得自动调整的字体大小?

转载 作者:技术小花猫 更新时间:2023-10-29 10:43:27 25 4
gpt4 key购买 nike

我想获取某些文本在 UILabel 或 UITextField 中缩小后的字体大小。这在 iOS 7.0 之前是可能的:How to get UILabel (UITextView) auto adjusted font size? .但是,sizeWithFont 在 iOS 7.0 中已被弃用。我试过使用它的替代品 sizeWithAttributes,但没有成功。在 iOS 7.0 中有什么方法可以做到这一点吗?

最佳答案

这是我为获取 UILabel 的调整字体大小而创建的函数:

swift

func getApproximateAdjustedFontSizeWithLabel(label: UILabel) -> CGFloat {

if label.adjustsFontSizeToFitWidth == true {

var currentFont: UIFont = label.font
let originalFontSize = currentFont.pointSize
var currentSize: CGSize = (label.text! as NSString).sizeWithAttributes([NSFontAttributeName: currentFont])

while currentSize.width > label.frame.size.width && currentFont.pointSize > (originalFontSize * label.minimumScaleFactor) {
currentFont = currentFont.fontWithSize(currentFont.pointSize - 1)
currentSize = (label.text! as NSString).sizeWithAttributes([NSFontAttributeName: currentFont])
}

return currentFont.pointSize

}
else {

return label.font.pointSize

}

}

objective-C

- (CGFloat)getApproximateAdjustedFontSizeWithLabel:(UILabel *)label {

if (label.adjustsFontSizeToFitWidth) {

UIFont *currentFont = label.font;
CGFloat originalFontSize = currentFont.pointSize;
CGSize currentSize = [label.text sizeWithAttributes:@{NSFontAttributeName : currentFont}];

while (currentSize.width > label.frame.size.width && currentFont.pointSize > (originalFontSize * label.minimumScaleFactor)) {
currentFont = [currentFont fontWithSize:currentFont.pointSize - 1];
currentSize = [label.text sizeWithAttributes:@{NSFontAttributeName : currentFont}];
}

return currentFont.pointSize;
}
else {

return label.font.pointSize;
}
}

关于ios - 如何在 iOS 7.0 或更高版本中获得自动调整的字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28284063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com