自定义UIPageControl点

时间:2017-03-14 10:34:33

标签: swift xcode draw uipagecontrol

我目前正在尝试自定义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
            }
        }

    }
}

我面临的另一个问题是我想在当前页面发生变化时删除/添加边框。

我希望有人能够帮助我

0 个答案:

没有答案