通過anchorPoint和position的設置,可以實現視圖的縮放和旋轉
在默認情況下,如圖1所示,一個layer的anchorPoint爲(0.5,0.5),layer的position是anchorPoint在它的父視圖中的相對座標;view.center是anchorPoint在父視圖中的座標,(而不是相對於自己的center),在默認情況下它與position相等。
然而position與anchorPoint之間改動其中一個,並不影響另外一個,而是會改變frame值,使position與anchorPoint都滿足設定要求。比如,將anchorPoint修改爲(0,0),那麼anchorPoint在當前View中位置變化到左上角(0,0)處,如圖2,但是position的並不會受到影響,即anchorPoint在superView中座標位置不變,這是這就需要通過修改view的frame值來實現,view的frame從圖一平移到圖2 狀態。同理,修改position也會導致view的frame發生變化。
在實際應用中,最好將position與anchorPoint對應上,防止縮放中產生偏移問題。
<span style="font-size:18px;">self.layer.position = CGPointMake(tapPoint.x+self.frame.origin.x, tapPoint.y+self.frame.origin.y);
self.layer.anchorPoint = CGPointMake(tapPoint.x/self.bounds.size.width, tapPoint.y/self.bounds.size.height);</span>