2017-08-04 81 views
0

我有一個繪圖應用程序使用UIBezierpaths(向量),我試圖創建一個函數,允許我像其他繪圖應用程序一樣縮放畫布/ UIView。我不想放大個人貝塞爾路徑,我已經知道如何做到這一點。我想要一個縮放功能像野生動物園,放大畫布/視圖。放大到UIView沒有像素化

如果我使用下面的代碼:

self.transform = CGAffineTransform(scaleX: 2, y: 2) 

此: enter image description here

打開成這樣了,你會發現是相當模糊的/不光滑如向量應該是: enter image description here

但我希望它看起來像這樣,這是另一個繪圖應用程序會發生什麼enter image description here

我明白這個問題可能有一個複雜的答案,但我努力自己找到答案。

+1

如果你想實現矢量縮放,你應該自己重新計算點。 'CGAffineTransform'不是基於矢量的。 – the4kman

+0

CGaffinetransform確實會正確放大uibezierpaths,但我想要轉換視圖 – user3290287

回答

0

我已經制作了一個可以放大的繪圖應用程序。我不記得我是如何設法處理這個的。 但我認爲你應該使用UIScrollView來管理縮放/拖動部分。
UIImageView pinch zoom swift

你將能夠捏縮放,拖動等幾乎免費。 而且它不會像素化我認爲

+0

感謝此。我以前玩過這個遊戲並沒有成功,假設這不是解決方案,但是會繼續嘗試,現在你已經告訴我這可能是解決方案 – user3290287

0

UIPinchGestureRecognizerUIPanGestureRecognizer添加到您的圖紙視圖。然後處理它們的委託事件以更新您的比例和偏移量。然後,您最終使用結果縮放和偏移來重繪(通常通過調用setNeedsDisplay())。

我可以從經驗告訴你,這些計算有點棘手,但可行。