Ios UILabel单个字符的宽度?
我想找到可以在UILabel的单行上显示的字符数 我有单行的宽度您可以使用Ios UILabel单个字符的宽度?,ios,swift,Ios,Swift,我想找到可以在UILabel的单行上显示的字符数 我有单行的宽度您可以使用 func getWidthFor(title: String) -> CGFloat { let font = UIFont(name: "YourFont", size: 13.0) let fontAttributes = [NSAttributedString.Key.font: font] let size = title.size(withAttributes: fontAttri
func getWidthFor(title: String) -> CGFloat {
let font = UIFont(name: "YourFont", size: 13.0)
let fontAttributes = [NSAttributedString.Key.font: font]
let size = title.size(withAttributes: fontAttributes as [NSAttributedString.Key: Any])
return size.width
}
然后将字符作为字符串发送,或者发送整个文本并检查是否合适。试试这个
在objective-C中,您可以不精确地估计它,但有一个解决方法: 获取字符串中的特定字母并确定字母大小。使用UILabel frame width,可以计算单行中可显示的平均字符数
NSString *letter = [label.text substringWithRange:NSMakeRange(index, 1)];
CGSize letterSize = [letter sizeWithFont:self.font];
NSNumber* numberOfCharacters = UILabel.frame.Size.width / letterSize;
如果它能帮助你。如果您使用的是单间距字体,它也能准确地工作。适合您的宽度的字符数取决于字符。。。“w”比“l”大得多。在不知道字符串的情况下,这是不可能的。您可以逐个添加字符来标记并检查每个循环上的行数。我问这个问题的原因是,当我们在UILabel末尾添加“…查看更多”时。我们怎么做?如果我想把它添加到第三行的末尾,只有当文本超过了这三行时,该怎么办。可能需要在Swift中重新格式化代码。
NSString *letter = [label.text substringWithRange:NSMakeRange(index, 1)];
CGSize letterSize = [letter sizeWithFont:self.font];
NSNumber* numberOfCharacters = UILabel.frame.Size.width / letterSize;