同一个Label中文字不同部分设置不同的属性,可以使用属性字符串NSAttributedString
这里给出一个例子
QQ20180314-162144@2x.png
通过这个例子,再一次体会到了swift的变化多端
NSAttributedStringKey相关的所有属性通过.语法找到,不再是以前的NSFontAttributeName、NSForegroundColorAttributeName了
NSAttributedStringKey.font对应NSFontAttributeName,用来设置字体
NSAttributedStringKey.foregroundColor 对应NSForegroundColorAttributeName,用来设置label的文字颜色
NSAttributedStringKey.backgroundColor对应NSBackgroundColorAttributeName,用来设置label某块区间的背景颜色
代码如下:
class ViewController: UIViewController {
func attributedText() -> NSAttributedString {
let string = "iOS SDK"
let result = NSMutableAttributedString(string: string)
//设置iOS的字体属性
let attributesForFirstWord = [NSAttributedStringKey.font : UIFont.boldSystemFont(ofSize: 60),
NSAttributedStringKey.foregroundColor : UIColor.red,
NSAttributedStringKey.backgroundColor : UIColor.black]
result.setAttributes(attributesForFirstWord, range:(string as NSString).range(of: "iOS") ) //(string as NSString)是为了使用range(of: "iOS") ) 这个接口
//设置SDK的字体属性
let shadow = NSShadow()
shadow.shadowColor = UIColor.darkGray
shadow.shadowOffset = CGSize(width: 4, height: 4)
let attributesForSecondWord = [NSAttributedStringKey.font : UIFont.boldSystemFont(ofSize: 60),
NSAttributedStringKey.foregroundColor : UIColor.white,
NSAttributedStringKey.backgroundColor : UIColor.red,
NSAttributedStringKey.shadow : shadow]
result.setAttributes(attributesForSecondWord, range: (string as NSString).range(of: "SDK"))
return NSAttributedString(attributedString: result)
}
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel()
label.backgroundColor = UIColor.clear
label.attributedText = attributedText()
label.sizeToFit() //这句话和下面一句话不能调换位置,否则效果不对,字体不会居中显示
label.center = view.center
view.addSubview(label)
}
}
网友评论