zoukankan      html  css  js  c++  java
  • swift判断 UILabel文字是否被折叠 是否有省略号 是否没显示全

      当UILabel中的文字过多或者超过设定的宽度的时候,系统会自动处理折叠剩余的字符,并在最后显示省略号。

      但是我们开发过程中有时候会需要判断是否被折叠,比如cell中只显示一行文字,点击文字展开剩余的文字

      这里用方法来表述,如果项目中很多处用到需要处理的情况可以把这个改写为UILabel的扩展类,使用起来会更加方便

    //判断文本标签的内容是否被截断
        func isTruncated (lbl : UILabel, text : String) ->(Bool) {
            let labelText = text
            
            //计算理论上显示所有文字需要的尺寸
            let rect = CGSize( lbl.bounds.width, height: CGFloat.greatestFiniteMagnitude)
            let labelTextSize = (labelText as NSString)
                .boundingRect(with: rect, options: .usesLineFragmentOrigin,
                              attributes: [NSAttributedString.Key.font: lbl.font], context: nil)
            
            //计算理论上需要的行数
            let labelTextLines = Int(ceil(CGFloat(labelTextSize.height) / lbl.font.lineHeight))
            
            //实际可显示的行数
            var labelShowLines = Int(floor(CGFloat(lbl.frame.size.height) / lbl.font.lineHeight))
            if lbl.numberOfLines != 0 {
                labelShowLines = min(labelShowLines, lbl.numberOfLines)
            }
            
            //比较两个行数来判断是否需要截断
            return labelTextLines > labelShowLines
        }
    

      

  • 相关阅读:
    输出1到100内前五个可以被3整除的数 while for
    Java:运用while()与do....while与for()
    break & continue
    while循环
    for循环例子
    if语句条件
    上位机开发二----第一个程序hallo world
    c语言获取数组长度的三种方法
    halcon标定后畸变校正与测量
    海康相机SDK联合c++标定
  • 原文地址:https://www.cnblogs.com/huangzhenwei/p/9760863.html
Copyright © 2011-2022 走看看