Можно ли добавить новый объект UIBezierPath в массив при каждом касании и перетаскивании экрана, чтобы его можно было отменить? - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь добавить UIBezierPath к массиву кортежей каждый раз, когда пользователь проводит пальцами по экрану, чтобы сделать рисунок.

Я инициализирую свои переменные

var arrayListFingerBezierPath: [(UIBezierPath, CGColor)] = []
var arrayListFingerPathUndoStore: [(UIBezierPath, CGColor)] = []

и в прикосновениях Начало У меня есть линии

fingerPath?.move(to: currentTouchPoint)
arrayListFingerBezierPath.append((fingerPath!, strokeColor))
setNeedsDisplay()

В моих прикосновенияхПереведено У меня есть строки

fingerPath?.addLine(to: currentTouchPoint)
arrayListFingerBezierPath.append((fingerPath!, strokeColor))
setNeedsDisplay()

В touchesEnded У меня есть строки

fingerPath?.addLine(to: currentTouchPoint)
arrayListFingerBezierPath.append((fingerPath!, strokeColor))
setNeedsDisplay()

Я добавляю fingerPath в массив, чтобы я мог отменить и повторить пути.Моя функция отмены работает следующим образом:

func undo()
{
    if(!arrayListFingerBezierPath.isEmpty)
    {
        arrayListFingerPathUndoStore.append(arrayListFingerBezierPath.removeLast())
        setNeedsDisplay()
    }
}

Можно ли добавлять новый объект UIBezierPath в массив каждый раз, когда пользователь касается и перетаскивает экран, таким образом, что нажатие кнопки отмены приведет к удалениювесь последний штрих, сделанный пользователем?

Я могу опубликовать весь код класса, если он вам нужен.

...