我有一个UIView,我希望用户能够在屏幕上拖动。
-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
CGPoint pt = [[touches anyObject] locationInView:self];
CGPoint center = self.center;
CGFloat adjustmentX = pt.x - startLocation.x;
CGFloat adjustmentY = pt.y - startLocation.y;
center.x += adjustmentX;
center.y += adjustmentY;
[self setCenter:center];
}
完美无缺,直到我将变换应用于视图,如下所示:
self.transform = CGAffineTransformMakeRotation(....);
但是,一旦应用了变换,拖动UIView会导致视图以指数螺旋效果移动。
我假设我必须在touchesMoved方法中对旋转进行校正,但到目前为止,所有的尝试都没有找到我。
答案 0 :(得分:1)
您需要将变换转换为新坐标,因为除了身份之外的变换会分配给您的视图,并且移动其中心会改变变换的结果。
尝试此操作,而不是更改视图的中心
self.transform = CGAffineTransformTranslate(self.transform, adjustmentX, adjustmentY);