я застрял с проблемой, когда мне нужно, чтобы изменить взгляды на заранее определенные места.Вычислить угол поворота для точки привязки
Все виды имеют 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
, но я не знаю, как это компенсировать.