1
我有一個自定義的UIImageView,我可以做一個翻譯與拖動屏幕周圍(xDif和yDif是量的手指移動):平移視圖和旋轉它的問題
CGAffineTransform translate = CGAffineTransformMakeTranslation(xDif, yDif);
[self setTransform: CGAffineTransformConcat([self transform], translate)];
比方說,我感動ImageView在x和y方向上均爲50px。然後我嘗試使用旋轉ImageView的(通過手勢識別):
CGAffineTransform transform = CGAffineTransformMakeRotation([recognizer rotation]);
myImageView.transform = transform;
會發生什麼事是ImageView的突然移動到了ImageView的最初位於(翻譯之前 - 在兩個方向上移動位置+ 50像素不)。 (看來,無論我如何翻譯視圖,ImageView子類的self.center保持不變 - 它最初放置在IB中)。
另一個問題是,如果我將ImageView旋轉30度,然後再嘗試旋轉一下,它會再次從原始位置(角度= 0)開始並從那裏開始,爲什麼不呢?從30度角開始,而不是0.
至於「中心」部分,它不會改變,另外需要注意的是,當改變'transform'屬性時'frame'將變得不可靠。 –
爲什麼中心不會改變,當視圖不是在翻譯後的開始位置時... – Ladislav
哦,所以他們所做的就是讓所有初始數據像中心一樣始終保持不變,並始終將它們轉換爲一個變換矩陣來獲得新的位置... – Ladislav