CoreText(五)-自定义光标

作者: 向日葵的夏天_summer | 来源:发表于2018-12-20 17:10 被阅读7次

    在阅读电子书的时候,可能有一个功能是长按一段文字,并出现自定义的光标。

    效果图

    WX20181220-171219@2x.png

    具体代码如下:

    class CustomCursorView: UIView {
    
    // 圈圈在下边
    private var circleOnBottom: Bool = false
    
    // 光标颜色
    var cursorColor: UIColor = .red {
        didSet {
            setNeedsDisplay()
        }
    }
    
    init(frame: CGRect, circleOnBottom: Bool) {
        super.init(frame: frame)
        
        self.circleOnBottom = circleOnBottom
        backgroundColor = UIColor.clear
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    override func draw(_ rect: CGRect) {
    
        let context = UIGraphicsGetCurrentContext()
        cursorColor.set()
    
        let cursorWidth = bounds.width / 2
     
        context?.addRect(CGRect(x: cursorWidth * 0.5, y: circleOnBottom ? 0 : 1, width: cursorWidth, height: bounds.height - 1))
        context?.fillPath()
    
        if circleOnBottom {
            context?.addEllipse(in: CGRect(x: 0, y: bounds.height - bounds.width, width: bounds.width, height: bounds.width))
        } else {
            context?.addEllipse(in: CGRect(x: 0, y: 0, width: bounds.width, height: bounds.width))
        }
    
        context?.fillPath()
        cursorColor.set()
    }
    
    }
    

    使用方法:

      let leftCursor = CustomCursorView(frame: CGRect(x: 100, y: 100, width: 8, height: 30), circleOnBottom: false)
      view.addSubview(leftCursor)
        
      let rightCursor = CustomCursorView(frame: CGRect(x: 200, y: 100, width: 8, height: 30), circleOnBottom: true)
      view.addSubview(rightCursor)

    相关文章

      网友评论

        本文标题:CoreText(五)-自定义光标

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