无限旋转的图像背景UIImageView
我想从UIImageView
扩展一个类,它将无限旋转一个宇宙图像。 所以我可以简单地把这个图像视图作为其他UI元素的背景视图。
这里有3个问题:
- 是从
UIImageview
类扩展的正确方法UIImageview
? - 如何保持旋转无限,并作为背景,当把它放到其他视图,我不需要写额外的代码行。
- 我写了一个粗略的原型,当我把它作为背景放入其他视图时,这个视图中的所有UI元素都随着图像旋转。
- 扩展UIImageView类没有任何错误。
- 创build旋转animation并将重复设置为ON。
- 不要在旋转的图像上添加元素。 (在基本视图中添加元素,在索引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];
它对我来说就像一个魅力。
从UIView类参考 :
UIImageView类经过优化将其图像绘制到显示器上。 UIImageView不会调用drawRect:一个子类。 如果您的子类需要自定义绘图代码,build议您使用UIView作为基类。
目前, UIImageView
子类可以工作,尤其是在不影响绘图代码的情况下。 只要不抱怨苹果,如果未来的iOS更新打破你的子类。 编写自己的UIView子类来显示图像是很容易的。 如果你已经有了一个合适的graphics,可以把它放在CALayer
contents
,而不是实现UIView的drawRect
方法。
通过改变UIView transform
(这是CGAffineTransform
types)的旋转总是采用最短的path。 这意味着270度的顺时针旋转为90度的逆时针旋转,并且360度的任何倍数都不起作用。 如果获得视图的图层, 则可以获得360度旋转,并为CALayer transform
( CATransform3D
types)设置animation。 请参阅我可以使用CGAffineTransformMakeRotation旋转视图超过360度吗?
为了使animation不断重复, CAMediaTiming Protocol Referencebuild议将repeatCount
设置为HUGE_VALF
。