美文网首页
iOS-swift - CATextLayer

iOS-swift - CATextLayer

作者: GA_ | 来源:发表于2017-03-19 23:24 被阅读346次
    // 1、CATextLayer比Label渲染的更快。
    // 2、CATextLayer硬件加速了。
    // 3、这个例子将Layer层创建成CATextLayer。重写了Label的是三个属性。
    //  LayerLabel.swift
    //  GATransitionAnimation
    //
    //  Created by houjianan on 2017/3/19.
    //  Copyright © 2017年 houjianan. All rights reserved.
    
    //  CATextLayer也要比UILabel渲染得快得多
    
    import UIKit
    
    class LayerLabel: UILabel {
    
    //    API说明:The class used to create the layer for instances of this class.
        override class var layerClass: AnyClass {
            return CATextLayer.classForCoder()
        }
    //    获得本身转变成CATextLayer的对象
        var textLayer: CATextLayer {
            return self.layer as! CATextLayer
        }
    //    设置textLayer
        func setUp() {
            textLayer.alignmentMode = kCAAlignmentJustified
            textLayer.isWrapped = true
            
            self.layer.display()
        }
    //    初始化方法
        override init(frame: CGRect) {
            super.init(frame: frame)
            setUp()
        }
        
        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    //    xib初始化
        override func awakeFromNib() {
            setUp()
        }
    //    重写相关属性text
        override var text: String? {
            didSet {
                // 001
                super.text = text
                // 002
                textLayer.string = text
            }
        }
    //    重写相关属性textColor
        override var textColor: UIColor? {
            didSet {
                super.textColor = textColor
                textLayer.foregroundColor = UIColor.blue.cgColor
            }
        }
    //    重写相关属性font
        override var font: UIFont? {
            didSet {
                super.font = font
                let fontRef = CGFont.init(font!.fontName as CFString)
                textLayer.font = fontRef
                textLayer.fontSize = font?.pointSize ?? 12
            }
        }
        
    }

    相关文章

      网友评论

          本文标题:iOS-swift - CATextLayer

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