WKInterfacelabel 检查是否被截断
WKInterfacelabel check if truncated
我想检查WKInterfacelabel 中的文本是否被截断了。由于没有文本 属性 并且我似乎无法获得您可以在情节提要中设置的行数 属性 我想知道是否有任何方法或技巧可以实现这一目标!?
谢谢!
您可以使用以下代码获取标签显示给定文本所需的行数。
CGFloat labelWidth = 100.0f;
NSString *text = @"some text";
[self.label setText:text];
[self.label setWidth:labelWidth];
UIFont *font = [UIFont systemFontOfSize:12.0f];
CGRect rect = [text boundingRectWithSize:CGSizeMake(labelWidth, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName : font}
context:nil];
CGFloat numOfLines = ceil(rect.size.height / font.lineHeight);
Swift 以上 @Sahana 的回答版本
func isTruncated(text: String, width: CGFloat, font: UIFont, numOfLines: Int) -> Bool {
let rect = text.boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)),
options: .usesLineFragmentOrigin,
attributes: [NSAttributedString.Key.font : font],
context: nil)
let thisNumOfLines = Int(ceil(rect.size.height / font.lineHeight))
let isTruncated = thisNumOfLines > numOfLines
return isTruncated
}
我想检查WKInterfacelabel 中的文本是否被截断了。由于没有文本 属性 并且我似乎无法获得您可以在情节提要中设置的行数 属性 我想知道是否有任何方法或技巧可以实现这一目标!?
谢谢!
您可以使用以下代码获取标签显示给定文本所需的行数。
CGFloat labelWidth = 100.0f;
NSString *text = @"some text";
[self.label setText:text];
[self.label setWidth:labelWidth];
UIFont *font = [UIFont systemFontOfSize:12.0f];
CGRect rect = [text boundingRectWithSize:CGSizeMake(labelWidth, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName : font}
context:nil];
CGFloat numOfLines = ceil(rect.size.height / font.lineHeight);
Swift 以上 @Sahana 的回答版本
func isTruncated(text: String, width: CGFloat, font: UIFont, numOfLines: Int) -> Bool {
let rect = text.boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)),
options: .usesLineFragmentOrigin,
attributes: [NSAttributedString.Key.font : font],
context: nil)
let thisNumOfLines = Int(ceil(rect.size.height / font.lineHeight))
let isTruncated = thisNumOfLines > numOfLines
return isTruncated
}