スクロールビューの下にimageViewを配置してあります。

@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var canvasView: UIImageView!
var saveImageArray = [UIImage]()   //Undo/Redo用にUIImage保存用

// タップされた座標にflowerを追加する(buttonをクリックした時の処理)
let flower = UIImageView(image: UIImage(named: "flower"))
flower.center = (sender as AnyObject).location(in: self.view)

**canvasViewの拡大を可能にしたい為、addSubView(flower)にしたら簡単にタップ位置にimageの大きさで表示されかつ拡大出来たので良かったのですが、結果としてSubViewとcanvasViewでは格納場所が違うようで以降のundo処理が出来ない状態です。
描いた線,画像の拡大,縮小が出来てundo,redo処理が出来る様に考えています。
現在の記述で描いた線,画像の拡大,縮小は出来るのだが,画像のredo,undoが出来ないです。
(この処理の中には線の記述はないです)
canvasView.addSubview(flower)

//配列にcanvasView.imageを保存
currentDrawNumber += 1
saveImageArray.append(canvasView.image!) 

//保存している直前のimageに置き換える (undoボタンをクリツクした時の処理)
@IBAction func pressUndoButton(_ sender: Any) {
    if currentDrawNumber <= 0 {return}      

    self.canvasView.image = saveImageArray[currentDrawNumber - 1]   
    currentDrawNumber -= 1
}

この処理で画像を書き換えられるはずなのですが、上手くいきません。
教えて戴けませんか ?