iOS 字符串相关样式

506 阅读1分钟

计算文本高度


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

}