我正在创建带有“ X”作为关闭/关闭按钮的涂鸦页面。 我还有一个“清除”按钮,可删除已制作的涂鸦。
我的问题是,当我按清除键时,即使X按钮消失了,如何防止这种情况发生?
这是我当前的应用。
这是我的Doodle课程,可让我在视图上绘画。
import UIKit
class DoodleView: UIView {
var lineColor:UIColor!
var lineWidth:CGFloat!
var path:UIBezierPath!
var touchPoint:CGPoint!
var startingPoint:CGPoint!
override func layoutSubviews() {
self.clipsToBounds = true
self.isMultipleTouchEnabled = false
lineColor = UIColor.white
lineWidth = 10
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first
startingPoint = touch?.location(in: self)
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first
touchPoint = touch?.location(in: self)
path = UIBezierPath()
path.move(to: startingPoint)
path.addLine(to: touchPoint)
startingPoint = touchPoint
drawShapeLayer()
}
func drawShapeLayer() {
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = lineColor.cgColor
shapeLayer.lineWidth = lineWidth
shapeLayer.fillColor = UIColor.clear.cgColor
self.layer.addSublayer(shapeLayer)
self.setNeedsDisplay()
}
func clearCanvas() {
path.removeAllPoints()
self.layer.sublayers = nil
self.setNeedsDisplay()
}
}
这是控制视图控制器的类。
import UIKit
class DoodlePageViewController: UIViewController {
@IBOutlet weak var doodleView: DoodleView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func clearDoodle(_ sender: Any) {
doodleView.clearCanvas()
}
@IBAction func CloseDoodlePage(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
}
答案 0 :(得分:0)
没有真正看到如何声明按钮,我只能猜测,当您调用函数router.post('/api/user/login', (request, response) => {
...
response.setHeader('Access-Control-Allow-Credentials', true);
response.setHeader('Access-Control-Allow-Headers', 'Content-Type');
response.setHeader('Access-Control-Allow-Method', 'get', 'post', 'options');
response.setHeader('Access-Control-Allow-Origin', request.get('Origin'));
response.setHeader('Access-Control-Max-Age','86400')
response.setHeader('Access-Control-Expose-Headers', 'Access-Control-Allow-Origin');
...
时,由于您设置了clearCanvas()
,因此X按钮是Doodle视图中子层的一部分,因此它也消失了。
创建时,请确保X按钮位于涂鸦视图的顶部。
答案 1 :(得分:0)
调用self.layer.sublayers = nil
您要么需要将“ x”视图重新添加回层次结构中。我假设使用您的函数drawShapeLayer()是'x'??
应该是
func clearCanvas() {
path.removeAllPoints()
self.layer.sublayers = nil
drawShapeLayer()
self.setNeedsDisplay()
}