美文网首页
swift - 计算文字宽度和高度

swift - 计算文字宽度和高度

作者: GA_ | 来源:发表于2017-03-14 14:57 被阅读5191次
    // e.g.
            let kTitleFarPOIMaxWidth: CGFloat = self.view.frame.size.width - 142
            let kTitlePOIMaxHeight: CGFloat = 51
            let s = "开始我是测试文字我是测试文字我是测试文字我是测试文字结束abc'de,212(*^% abcde bacdea"
            let fontSize: CGFloat = 21
            let w: CGFloat = kTitleFarPOIMaxWidth
            let h1 = s.ga_heightForComment(fontSize: fontSize, width: w)
            let h = s.ga_heightForComment(fontSize: fontSize, width: w, maxHeight: kTitlePOIMaxHeight)
            let l = UILabel(frame: CGRect(x: 100, y: 100, width: w, height: h))
            l.font = UIFont.systemFont(ofSize: fontSize, weight: UIFontWeightMedium)
            l.text = s
            l.numberOfLines = 0
            l.backgroundColor = UIColor.yellow
            self.view.addSubview(l)
    
    
    //  UIFont.systemFont(ofSize: fontSize, weight: UIFontWeightMedium)
    // 计算文字高度或者宽度与weight参数无关
    extension String {
        func ga_widthForComment(fontSize: CGFloat, height: CGFloat = 15) -> CGFloat {
            let font = UIFont.systemFont(ofSize: fontSize)
            let rect = NSString(string: self).boundingRect(with: CGSize(width: CGFloat(MAXFLOAT), height: height), options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)
            return ceil(rect.width)
        }
        
        func ga_heightForComment(fontSize: CGFloat, width: CGFloat) -> CGFloat {
            let font = UIFont.systemFont(ofSize: fontSize)
            let rect = NSString(string: self).boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)
            return ceil(rect.height)
        }
        
        func ga_heightForComment(fontSize: CGFloat, width: CGFloat, maxHeight: CGFloat) -> CGFloat {
            let font = UIFont.systemFont(ofSize: fontSize)
            let rect = NSString(string: self).boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)
            return ceil(rect.height)>maxHeight ? maxHeight : ceil(rect.height)
        }
    }
    

    相关文章

      网友评论

          本文标题:swift - 计算文字宽度和高度

          本文链接:https://www.haomeiwen.com/subject/ihchnttx.html