questo può sembrare divertente, ma ho trascorso ore cercando di ricreare una manopola con una rotazione realistica utilizzando UIView e alcuni trig. Ho raggiunto l'obiettivo, ma ora non riesco a capire come sapere se la manopola sta ruotando a sinistra oa destra. La parte più pertinente della matematica è qui:ottenere la direzione di rotazione di UIView su touchesMoved
- (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)]; } }
idealmente, ho potuto sfruttare un valore numerico di dirmi se la rotazione è positivo o negativo.