当前位置:  开发笔记 > IOS > 正文

围绕其中心旋转UIView几次

如何解决《围绕其中心旋转UIView几次》经验,为你挑选了2个好方法。

我试图UIView围绕它的中心旋转一些,所以简单的代码就像(伪代码):

[UIView beginAnimations:@"crazyRotate" context:nil];
[UIView setAnimationDuration:1.0];
someview.transform = CGAffineTransformMakeRotation(angle);
[UIView commitAnimations]

现在,如果我设置角度来说M_PI/2,那么事情就会很好地旋转.如果我把它设置为2*M_PI,它确实"没有".我可以理解,矩阵转化为无效的东西(旋转360意味着"停留"在某种意义上),但是,我想要旋转它5次(想想一个报纸旋转刻度即将到来 - 我不是非常善于描述,希望有人理解).所以,我尝试将设置角度添加到180度(M_PI)并添加嵌套animatationBlock.但我想,因为我someview.transition再次设置相同的属性(),它会以某种方式忽略它.我尝试用角度M_PI将动画的重复计数设置为2,但它似乎只是旋转180,回到直线位置,然后再次启动旋转.

所以,我有点想法,任何帮助赞赏!--t



1> Jason Medeir..:

您可以在UIView的图层属性上使用以下动画.我测试过了.

UIView *viewToSpin = ...;    
CABasicAnimation* spinAnimation = [CABasicAnimation
                                  animationWithKeyPath:@"transform.rotation"];
spinAnimation.toValue = [NSNumber numberWithFloat:5*2*M_PI];
[viewToSpin.layer addAnimation:spinAnimation forKey:@"spinAnimation"];



2> Jeff Hay..:

正如布拉德拉森所说,你可以用一个CAKeyframeAnimation.例如,

CAKeyframeAnimation *rotationAnimation;
rotationAnimation = 
   [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];

rotationAnimation.values = [NSArray arrayWithObjects:
                            [NSNumber numberWithFloat:0.0 * M_PI], 
                            [NSNumber numberWithFloat:0.75 * M_PI], 
                            [NSNumber numberWithFloat:1.5 * M_PI], 
                            [NSNumber numberWithFloat:2.0 * M_PI], nil]; 
rotationAnimation.calculationMode = kCAAnimationPaced;
rotationAnimation.removedOnCompletion = NO;
rotationAnimation.fillMode = kCAFillModeForwards;
rotationAnimation.timingFunction = 
   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
rotationAnimation.duration = 10.0;

CALayer *layer = [viewToSpin layer];
[layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];

您可以使用rotationAnimation.duration属性控制整个动画的持续时间,并使用属性控制加速和减速(以及两者之间的步骤计算)rotationAnimation.timingFunction.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有