【问题标题】:WKInterfacelabel check if truncatedWKInterfacelabel 检查是否被截断
【发布时间】:2015-09-08 05:39:45
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: ios objective-c watchkit truncated wkinterfacelabel


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

      上面@Sahana的答案的Swift版本

      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
      }
      

      【讨论】:

        猜你喜欢
        • 2011-03-05
        • 1970-01-01
        • 2021-02-17
        • 2017-05-18
        • 2011-02-24
        • 2018-01-21
        • 1970-01-01
        • 1970-01-01
        • 2012-10-13
        相关资源
        最近更新 更多