编辑代码

class FiveStar : Shape { 
    //五角星和正五边形较为类似
    //中心坐标
    var center : CGPoint?
    //半径
    var radius : CGFloat?
    //旋转的角度
    var angel : CGFloat? 
    //构造器
    init(name: String, origin: CGPoint, center : CGPoint,radius : CGFloat,angel : CGFloat ) {
        super.init(name: namer origin: origin)
        self.center = center
        self.radius = radius
        self.angel = angel
    }
    convenience init(center : CGPoint,radius : CGFloat,asngel : CGFloat = 0) { 
        let x = center.x - radius
        let y = center.y - radius
        self.init(name: nFiveStarworigin: CGPoint(x:x,y:y), center:center, radius: radius, angel: angel) {
            //自定义方法drawBezierPath用于画五角星
            override func drawBezierPath() {
                //调用贝塞尔曲线函数UIBezierPath()
                let path = UIBezierPath()
                //五角星旋转顶点
                let i = 360/angel!
                let xzAngle = CGFloat.pi*2/i
                let xzX = (center?.x)! - sin(xzAngle)*radius!
                let xzY = (center?.y)! - cos(xZAngle)*radius!
                let p1 = CGPoint(x: xzX,y: xzY)
                path.move(to: p1)
                let angle = CGFloat.pi*4/5
                for i in 1...5 {
                    let x = (center?.x)! - sin(CGFloat(i)*angle+xzAngle)*radius
                    let y = (center?.y)! - cos(CGFloat(i)*angle+xzAngle)*radius
                    path.addLine(to: CGPoint(x:x,y: y))
                }
                path.close()
                // 线条宽度
                path.lineWidth = lineWidth!
                //线条颜色为red红色
                lineColor?.setstroke()
                //画出这个圆
                path.stroke()
            }
        }