计算文本高度
func yx_calculateHeigh(withWidth width:CGFloat,size:CGFloat,lineSpacing:CGFloat) -> CGFloat{
let font = UIFont.systemFont(ofSize: size)
let style = NSMutableParagraphStyle()
style.lineSpacing = lineSpacing //行间距
let attribute = [NSAttributedString.Key.font:font,NSAttributedString.Key.paragraphStyle:style]
let value = NSString.init(string: self)
let textSize = value.boundingRect(with: CGSize(width: width, height:CGFloat(MAXFLOAT)), options: [.truncatesLastVisibleLine, .usesLineFragmentOrigin, .usesFontLeading], attributes: attribute, context: nil).size
return textSize.height + 10
}
计算文本宽度
func yx_calculateWidth(withHeight height:CGFloat,size:CGFloat) -> CGFloat{
let font = UIFont.systemFont(ofSize: size)
let attribute = [NSAttributedString.Key.font:font]
let value = NSString.init(string: self)
let rect = value.boundingRect(with: CGSize(width: CGFloat(MAXFLOAT), height: height), options: [.truncatesLastVisibleLine, .usesLineFragmentOrigin, .usesFontLeading] , attributes: attribute, context: nil)
return rect.size.width + 10
}
设置字体的行距
public func yx_changeLineForString(lineSpace:CGFloat) -> NSAttributedString{
let attributedString = NSMutableAttributedString.init(string: self)
let paragraphStye = NSMutableParagraphStyle()
paragraphStye.lineSpacing = lineSpace
let rang = NSMakeRange(0, CFStringGetLength(self as CFString))
attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStye, range: rang)
return attributedString
}
设置字体的间距
public func yx_changeSpaceForString(lineSpace:CGFloat) -> NSAttributedString{
let attributedString = NSMutableAttributedString.init(string: self, attributes: [NSAttributedString.Key.kern:lineSpace])
let paragraphStye = NSMutableParagraphStyle()
paragraphStye.lineSpacing = lineSpace
let rang = NSMakeRange(0, CFStringGetLength(self as CFString))
attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStye, range: rang)
return attributedString
}
字体颜色和样式
public func setTextFont(isBold:Bool?=false,color:UIColor?=UIColor.black,fontSize:CGFloat,ranStr:String) -> NSAttributedString {
var font : UIFont!
//是否加粗
if isBold! {
font = UIFont.boldSystemFont(ofSize: fontSize)
}else{
font = UIFont.systemFont(ofSize: fontSize)
}
let str = NSMutableAttributedString.init(string: self)
let range = (self as NSString).range(of: ranStr)
str.addAttribute(NSAttributedString.Key.font, value: font, range: range)
str.addAttribute(NSAttributedString.Key.foregroundColor, value: color!, range: range)
return str
}