Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UILabel单个字符的宽度?_Ios_Swift - Fatal编程技术网

Ios 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

我想找到可以在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: 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;