0
我遇到了需要將視圖重新定位到預定義位置的問題。計算定位點的旋轉角度
所有視圖都有UIPanGestureRecognizer
和UIRotationGestureRecognizer
,並在控制器視圖中定位/旋轉。在某個事件後,視圖應該以新的旋轉角度移動到新的位置。
一切工作正常,但只要其中一個手勢識別器是活動的,因此anchorPoint
改變了重新定位/旋轉失敗。
這裏是我嘗試使用anchorPoint
中的轉換的方法。
- (CGPoint)centerPointWithInVisibleAreaForPoint:(CGPoint)point
{
CGPoint anchorP = self.layer.anchorPoint;
anchorP.x -= 0.5;
anchorP.y -= 0.5;
CGRect rect = self.bounds;
CGFloat widthDelta = CGRectGetWidth(self.bounds) * anchorP.x;
CGFloat heightDelta = CGRectGetHeight(self.bounds) * anchorP.y;
CGPoint newCenter = CGPointMake(point.x + widthDelta, point.y + heightDelta);
return newCenter;
}
控制器要求校正的中心點並設置視圖的中心值。之後,使用CGAffineTransformConcat(view.transform, CGAffineTransformMakeRotation(differenceAngle))
設置旋轉變換。
我認爲這個問題是由以下事實引起的:預定義的目標角度是基於圍繞中心的旋轉,當圍繞不同的anchorPoint
旋轉時明顯不同,但我不知道如何補償這一點。