Я не уверен, что это за состояние, когда touchesEnded (в терминах поворота), и я предполагаю, что вы выбрали degToRadians (-130), чтобы попытаться сделать это частично, и ожидайте, что следующий метод сделает остальное. Это должно быть лучшим решением, которое, как мы надеемся, даст ожидаемый результат. Я не уверен, что такое кадран или почему вы его вращаете, поэтому я просто поверну колесо.
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
wheel.transform = CGAffineTransformMakeRotation(degreesToRadians(-130));
// I would recommend that the degrees you rotate be half of whatever your rotation is.
// this would make the wheel rotate to the home position more evenly
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animatewheelViewToCenter:finished:context:)];
[UIView commitAnimations];
}
- (void)animatewheelViewToCenter:(NSString *)animationID finished:(NSNumber *)finished context:(id)context {
[UIView setAnimationBeginsFromCurrentState:YES]; // you might need to make this NO
[UIView beginAnimations:nil context:NULL];
[UIViewsetAnimationDuration:0.2];
wheel.transform = CGAffineTransformIdentity;
[UIView commitAnimations];
}
РЕДАКТИРОВАТЬ: На самом деле, я бы, вероятно, сделал поворот (в примере -130 градусов) немного больше, чем половина, потому что CGAffineTransformIdentity будет идти кратчайшим путем, чтобы вернуться к обычному, поэтому если вы идете ровно на 1/2 пути, он может идти не в том направлении (по часовой стрелке или против часовой стрелки), которое вы хотите.