在阅读电子书的时候,可能有一个功能是长按一段文字,并出现自定义的光标。
效果图
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)
作者:三_木子_
链接:https://www.jianshu.com/p/7e090b12982a