无限旋转图像背景UIImageView
我想从UIImageView
扩展一个类,这将无限旋转宇宙图像。所以我可以简单地把这个图像视图作为其他UI元素的背景视图。无限旋转图像背景UIImageView
3个问题在这里:
- 它是从
UIImageview
类扩展的正确途径。 - 如何保持旋转无限,并作为背景,当把它放入其他视图时,我不需要额外编写代码行。
- 我写了一个粗略的原型,当我把它放到其他视图中作为背景时,这个视图中的所有UI元素都随图像旋转。
- 扩展UIImageview类没有任何错误。
- 创建旋转动画并设置重复开启。
- 请勿在旋转图像上添加元素。 (在基本视图中添加元素,在索引0处插入旋转的imageview)。
假设您有一个UIImageView并为其分配一个图像并命名为myImgView。在viewDidLoad上添加你的代码如下:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationRepeatCount:MAXFLOAT];
myImgView.transform = CGAffineTransformMakeRotation(M_PI);
[UIView commitAnimations];
它对我来说就像一个魅力。
谢谢。你是对的,它像一个魅力。 8-) – icespace 2012-04-19 01:34:45
UIImageView类被优化以绘制其图像的显示。 UIImageView不会调用drawRect:一个子类。如果您的子类需要自定义绘图代码,建议您使用UIView作为基类。
目前,UIImageView
子类做的工作,特别是如果他们不干扰绘图代码。如果未来的iOS更新会破坏您的子类,请不要抱怨苹果。很容易编写自己的UIView子类来显示图像。如果您已经有适当的图形,可以考虑将它放在CALayer
contents
中,而不是实现UIView drawRect
方法。
轮作通过改变UIView transform
(其为CGAffineTransform
类型的)始终以最短路径。这意味着270度的顺时针旋转是90度逆时针旋转的动画,360度的任何倍数都不会产生任何影响。如果您获得视图的图层并且设置了动画CALayer transform
(其类型为CATransform3D
),则您可以罐头获得360度旋转。请参阅Can I use CGAffineTransformMakeRotation to rotate a view more than 360 degrees?
为了使动画不断重复,CAMediaTiming Protocol Reference建议将repeatCount
设置为HUGE_VALF
。
谢谢你解释。我复制了hieund的代码(请参阅上面的注释)。利用iOS提供的API总是正确的方式。再次感谢。 – icespace 2012-04-19 01:38:51
谢谢你,帮忙。我会检查我的代码的细节。 – icespace 2012-03-15 09:03:00
@icespace欢迎:) – Vignesh 2012-03-15 09:03:43