ios相关文章

swift4.0-标签中属性字符串的显示

2018-03-14  本文已影响247人  落夏简叶

同一个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)
        
    }

}
上一篇下一篇

猜你喜欢

热点阅读