我正在使用一个带有四个瓷砖作为菜单的旋转轮的应用程序。如果用户在车轮上拾取未朝下的瓷砖,则会自动旋转以使该瓷砖面朝下。然后它继续选择自己,依此类推。这是客户要求的。问题是,当选择了拼贴1(旋转值为M_PI)时,它会跳过缓慢稳定的动画,否则在iOS 8和其他具有不同旋转值的拼贴上都会完美地运行,而是跳转。
总结一下:在animationDuration设置为M_PI的情况下,它在iOS7上表现得非常奇怪。不是8。
以下是一些代码:
[UIView animateWithDuration:animationDuration
delay:0.0f
options:UIViewAnimationOptionCurveEaseOut
animations:^{
wheel.container.transform = CGAffineTransformMakeRotation(rotation);
}
completion:^(BOOL finished){
//completion code
}
];
答案 0 :(得分:0)
它也可能与数据类型有关,如M_PI是double或float。此外,如何计算轮换以及它的数据类型是什么 -
我也遇到过类似的问题,我将M_PI中十进制后的位数限制在6左右(比如#define M_PI_S 3.141592),这对我有用。
至少你可以试一试。
我把代码编写为
#define M_PI_S 3.141592 /* pi */
#define DEGREES_TO_RADIANS(angle) (angle / 180.0 * M_PI_S)
- (void)rotateImage:(UIImageView *)image duration:(NSTimeInterval)duration curve:(int)curve degrees:(CGFloat)degrees
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:curve];
[UIView setAnimationBeginsFromCurrentState:YES];
CGAffineTransform transform =
CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(degrees));
image.transform = transform;
[UIView commitAnimations];
}
并将该函数称为 -
[self rotateImage:variationCell.m_helpImage duration:0.25
curve:UIViewAnimationCurveEaseIn degrees:90];