在阅读电子书的时候,可能有一个功能是长按一段文字,并出现自定义的光标。
效果图
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)
网友评论