我想从UIImageView
扩展一个类,它将无限旋转宇宙图像。所以我可以简单地将此图像视图作为其他UI元素的背景视图。
此处有3个问题:
UIImageview
课程扩展的正确方法。答案 0 :(得分:3)
假设您有一个UIImageView并在其上分配一个图像并命名为myImgView。在viewDidLoad上,将代码添加为:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationRepeatCount:MAXFLOAT];
myImgView.transform = CGAffineTransformMakeRotation(M_PI);
[UIView commitAnimations];
它对我来说就像一个魅力。
答案 1 :(得分:2)
答案 2 :(得分:1)
优化UIImageView类以将其图像绘制到显示器。 UIImageView不会调用drawRect:一个子类。如果您的子类需要自定义绘图代码,建议您使用UIView作为基类。
目前,UIImageView
子类确实有效,特别是如果它们不干扰绘图代码。如果未来的iOS更新破坏了您的子类,请不要向苹果抱怨。编写自己的UIView子类以显示图像非常容易。如果您已有适当的图片,请考虑将其放在CALayer
contents
中,而不是实施UIView drawRect
方法。
通过更改UIView transform
(类型为CGAffineTransform
)的轮换始终采用最短路径。这意味着270度的顺时针旋转被动画为90度的逆时针旋转,并且360度的任何倍数都将无效。如果获得视图的图层,则可以获得360度旋转,并为CALayer transform
设置动画(类型为CATransform3D
)。见Can I use CGAffineTransformMakeRotation to rotate a view more than 360 degrees?
为了让动画无休止地重复,CAMediaTiming Protocol Reference建议将repeatCount
设为HUGE_VALF
。