это может звучать смешно, но я часами пытался воссоздать ручку с реалистичным вращением, используя UIView и некоторые триггеры. Я достиг цели, но теперь я не могу понять, как узнать, вращается ли ручка влево или вправо. Самая важная часть математики здесь:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint pt = [touch locationInView:self];
float dx = pt.x - iv.center.x;
float dy = pt.y - iv.center.y;
float ang = atan2(dy,dx);
//do the rotation
if (deltaAngle == 0.0) {
deltaAngle = ang;
initialTransform = iv.transform;
}else
{
float angleDif = deltaAngle - ang;
CGAffineTransform newTrans = CGAffineTransformRotate(initialTransform, -angleDif);
iv.transform = newTrans;
currentValue = [self goodDegrees:radiansToDegrees(angleDif)];
}
}
в идеале, я мог бы использовать числовое значение, чтобы сказать мне, является ли вращение положительным или отрицательным.