我目前正在尝试自定义UIPageControl以满足我的需求。但是,在draw
我想要做的是能够使用IBInspectable
个变量来绘制UIPageControl
但是当nil
方法出现时,这些变量似乎仍为draw
调用,当我尝试在awakeFromNib
中实现我的逻辑时,它将无效。
到目前为止我做的是以下
class BoardingPager: UIPageControl {
@IBInspectable var size: CGSize!
@IBInspectable var borderColor: UIColor!
@IBInspectable var borderWidth: CGFloat! = 1
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.pageIndicatorTintColor = UIColor.clear
}
override func draw(_ rect: CGRect) {
super.draw(rect)
setDots()
}
func setDots() {
for i in (0..<self.numberOfPages) {
let dot = self.subviews[i]
if size != nil {
let dotFrame = CGRect(x: size.width/2, y: size.height/2, width: size.width, height: size.height)
dot.frame = dotFrame
}
if i != self.currentPage {
dot.layer.cornerRadius = dot.frame.size.height / 2
dot.layer.borderColor = borderColor.cgColor
dot.layer.borderWidth = borderWidth
}
}
}
}
我面临的另一个问题是我想在当前页面发生变化时删除/添加边框。
我希望有人能够帮助我