编辑代码

class shape {
    var name : String?
    var sides : Int?
    var origin : CGPoint?
    var lineColor : UIColor = UIColor.red
    var fillColor : UIColor = UIColor.green
    var lineWidth : CGFloat =2
    init(name : String, sides : Int, origin :CGPoint) {
        self.name=name
        self.sides = sides 
        self.origin = origin
    }
    func sayHello(){
        print("Shape is \(name!),sides \(sides!), and origincord is(\
        (origin!.x),\(origin!.y)) ")
    }
}
class view
    Controller: UIviewCon troller {
    override func viewDidLoad() { 
        super.viewDidLoad()
        let myShape = Shape(nam e:"BaseShape", sides: 0, origin: CGPoint(x:0,y:0))
        myShape.sayHello()
    }
}

import ulkit
class Shape {
    var name : string?
    var sides : Int?
    var origin : CGPoint?
    var lineColor : UIColor = UIColor.red
    var fillcolor : UIColor = UIColor.green
    var lineWidth : CGFloat = 2
    init(name : String, sides : Int, origin : CGPoint) {
    self.name=name
        self.sides=sides
        self.origin=origin
        func sayHello(){
            print("Shape:\(name!),sides \(sides!), origin (\(origin!.x),\
            (origin!.y)) ")
        }
    } 

     class Czfview : UIView {
        var shape : shape?
        override func draw(_ rect: CGRect) {
            guard let s = shape else {
                return
            }
            s.sayHello()
        }
    }
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let myShape = Shape(name:"B aseShape", sides: 0,origin: CGPoint(x:0,y:0))
        let width = self.view.fral me.size.width
        let height = self.view.fr ame.size.height
        let myView=Czfview(frai me: CGRect(x: 0, y: 0, width: width,
        height: height))
        myView.shape=myShape
        self.view.addSubview(myView)
    }
}

func drawBezierPath(){
    let path = UIBeziPath()
    let center :CGPoint =CGPoint(x: 100,y : 100)
    let radius :cgfloa
    path.addArc(withcenendAngle:cGFloat.pi*2,clockwiater: center, radius: radius, startAngle: 0 se: true)
    path.lineWidth =5
    UIColor.red.setStroke()
    path.stroke()
}

class Rectangle : Shape {
    var size :cgsize?
        init(name: String, origin:CGPointsize:CGSize){
        super.init(name: name, origin: origin) 
        self.size=size
    }
    convenience init(origin: CGPoint, size:CGSize){
        self.init(name: "Rectangle", origin: origin, size: size)}
    }