首页 > 解决方案 > 如何防止后退按钮消失?

问题描述

我正在创建一个带有“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)
    }
}

标签: swiftcanvasback

解决方案


在没有真正看到您如何声明按钮的情况下,我只能猜测当您调用函数clearCanvas()时,X 按钮是涂鸦视图中子层的一部分,因为您正在设置self.layer.sublayers = nil因此它也消失了。

创建涂鸦视图时,请确保 X 按钮位于涂鸦视图的顶部。


推荐阅读