WKInterfacelabel检查是否被截断

问题描述 投票:1回答:2

我想检查WKInterfacelabel中的文本是否被截断。由于没有文本属性,而且似乎无法获得您可以在情节提要中设置的行数属性,我想知道是否有任何方法或技巧可以实现此目的!?

谢谢!

ios objective-c watchkit truncated wkinterfacelabel
2个回答
1
投票

您可以使用下面的代码获取标签显示给定文本所需的行数。

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);

0
投票

以上@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
}
© www.soinside.com 2019 - 2024. All rights reserved.