美文网首页ios相关文章
swift4.0-标签中属性字符串的显示

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

作者: 落夏简叶 | 来源:发表于2018-03-14 16:31 被阅读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)
            
        }
    
    }
    

    相关文章

      网友评论

        本文标题:swift4.0-标签中属性字符串的显示

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