ios - Swift ios 如何找出标签文本是否被截断

标签 ios swift fonts uilabel truncate

将 Storyboard 中的行数标记为 3

以下是我用来判断标签文本是否被截断的代码

 let size = reviewLbl.text?.size(withAttributes: [.font: reviewLbl.font]) ?? .zero
    if (size.height > reviewLbl.frame.size.height) {

    }

也尝试了以下链接,但它对我不起作用,所以不要将此称为重复问题

How to check if UILabel is truncated?

最佳答案

  func countLabelLines() -> Int {
    // Call self.layoutIfNeeded() if your view is uses auto layout
    let myText = self.text! as NSString
    let attributes = [NSAttributedString.Key.font : self.font]

    let labelSize = myText.boundingRect(with: CGSize(width: self.bounds.width, height: CGFloat.greatestFiniteMagnitude), options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: attributes as [NSAttributedString.Key : Any], context: nil)
    return Int(ceil(CGFloat(labelSize.height) / self.font.lineHeight))
}
  func isTruncatedOrNot() -> Bool {

    if (self.countLabelLines() > self.numberOfLines) {
        return true
    }
    return false
}

试试这个,self.bound.width 是您的标签宽度,因此如果您在堆栈 View 中添加标签,请确保标签宽度或堆栈 View 具有适当的约束。
在您的情况下,它每次都返回 true,因为它可能有约束问题。

关于ios - Swift ios 如何找出标签文本是否被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57676283/

相关文章:

ios - 从 UIPageViewController 中移除页面指示器

ios - 核心动画 setFromValue

ios - 从 iOS 推送通知打开项目

ios - 传递 self 并在没有保留周期的闭包中返回它

swift - 如何在按下位于自定义 UIView 内且带有 XCode Storyboard的 UIButton 时创建 Segue

c# - 为什么无法将任何字体保存为图像? (但要在我的窗体上显示它)

html - 使用来自不同服务器的 css 链接到托管字体

css - Google 字体中的数字显示不同

iphone - 通过模态视图呈现详细 View Controller

ios - 获取单元格中的 indexPath.row