【发布时间】:2025-12-18 07:30:01
【问题描述】:
我是 swift 的初学者,现在我正在与可能很简单的事情打架。
如果我点击按钮撤消,MyDrawView 应该是清晰的,如果我点击多边形填充,例如紫色,然后我点击圆形,只有一个对象。
类似这样的:
但现在我有了这个:
我的代码:
import UIKit
import QuartzCore
class MyDrawView: UIView{
var circle = UIBezierPath()
let polygon = UIBezierPath()
let shapeLayer1 = CAShapeLayer()
let shapeLayer2 = CAShapeLayer()
func drawCircle(){
circle = UIBezierPath(arcCenter: CGPoint(x: 200, y: 300), radius: CGFloat(100), startAngle: CGFloat(0), endAngle: CGFloat(Double.pi * 2), clockwise: true)
shapeLayer1.path = circle.cgPath
shapeLayer1.fillColor = UIColor.clear.cgColor
shapeLayer1.strokeColor = UIColor.black.cgColor
shapeLayer1.lineWidth = 3.0
layer.addSublayer(shapeLayer1)
}
func drawPolygon(){
polygon.move(to: CGPoint(x: 50, y: 50))
polygon.addLine(to: CGPoint(x: 230, y: 90))
polygon.addLine(to: CGPoint(x: 240, y: 250))
polygon.addLine(to: CGPoint(x: 50, y: 280))
polygon.addLine(to: CGPoint(x: 100, y: 150))
polygon.addLine(to: CGPoint(x: 50, y: 50))
shapeLayer4.path = polygon.cgPath
shapeLayer2.fillColor = UIColor.clear.cgColor
shapeLayer2.strokeColor = UIColor.black.cgColor
shapeLayer2.lineWidth = 3.0
layer.addSublayer(shapeLayer2)
}
@IBAction func clickButtonUndo(_ sender: UIButton) {
}
@IBAction func clickButtonCircle(_ sender: UIButton) {
drawCircle()
}
@IBAction func clickButtonPolygon(_ sender: UIButton) {
drawPolygon()
}
@IBAction func buttonPurple(_ sender: UIButton) {
shapeLayer1.path = circle.cgPath
shapeLayer2.path = polygon.cgPath
shapeLayer1.fillColor = UIColor.purple.cgColor
shapeLayer1.strokeColor = UIColor.black.cgColor
shapeLayer1.lineWidth = 3.0
shapeLayer2.fillColor = UIColor.purple.cgColor
shapeLayer2.strokeColor = UIColor.black.cgColor
shapeLayer2.lineWidth = 3.0
layer.addSublayer(shapeLayer1)
layer.addSublayer(shapeLayer2)
}
}
【问题讨论】:
标签: ios swift xcode calayer cashapelayer