无限旋转的图像背景UIImageView

我想从UIImageView扩展一个类,它将无限旋转一个宇宙图像。 所以我可以简单地把这个图像视图作为其他UI元素的背景视图。

这里有3个问题:

  1. 是从UIImageview类扩展的正确方法UIImageview
  2. 如何保持旋转无限,并作为背景,当把它放到其他视图,我不需要写额外的代码行。
  3. 我写了一个粗略的原型,当我把它作为背景放入其他视图时,这个视图中的所有UI元素都随着图像旋转。

  1. 扩展UIImageView类没有任何错误。
  2. 创build旋转animation并将重复设置为ON。
  3. 不要在旋转的图像上添加元素。 (在基本视图中添加元素,在索引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 (这是CGAffineTransformtypes)的旋转总是采用最短的path。 这意味着270度的顺时针旋转为90度的逆时针旋转,并且360度的任何倍数都不起作用。 如果获得视图的图层, 可以获得360度旋转,并为CALayer transformCATransform3Dtypes)设置animation。 请参阅我可以使用CGAffineTransformMakeRotation旋转视图超过360度吗?

为了使animation不断重复, CAMediaTiming Protocol Referencebuild议将repeatCount设置为HUGE_VALF