资产的名称是loading_apple但是当我添加以下代码时,我得到一个nullpointer异常错误:
let img = UIImage (named: "loading_apple")
那我怎么能显示这个gif? :(
希望有人可以帮助我。
答案 0 :(得分:2)
我建议使用FLAnimatedImage https://github.com/Flipboard/FLAnimatedImage
答案 1 :(得分:1)
我建议打破那个gif的帧并使用animatedImageNamed:duration:
- 您可以将它们命名为所有相似的名称,并在最后添加一个数字。例如:
loading-1.png
loading-2.png
loading-3.png
等。
Xcode会识别您想要多个图像并按顺序播放这些图像。
查看THIS
答案 2 :(得分:0)
而不是存储gif文件,为什么不使用CAReplicatorLayer
引用此link和此link in objective c,我在第二个中使用了相同的代码并进行了一些修改,
func spinTheCustomSpinner() -> Void {
let aBar:CALayer = CALayer.init()
aBar.bounds = CGRectMake(0, 0, 8, 25);
aBar.cornerRadius = 4; //(8/2)
aBar.backgroundColor = UIColor.blackColor().CGColor
aBar.position = CGPointMake(150.0, 150.0 + 35)
let replicatorLayer:CAReplicatorLayer = CAReplicatorLayer.init()
replicatorLayer.bounds = CGRectMake(0, 0,300,300)
replicatorLayer.cornerRadius = 10.0
replicatorLayer.backgroundColor = UIColor.whiteColor().CGColor
replicatorLayer.position = CGPointMake(CGRectGetMidX(self.view!.bounds), CGRectGetMidY(self.view!.bounds))
let angle:CGFloat = CGFloat (2.0 * M_PI) / 12.0
let transform:CATransform3D = CATransform3DMakeRotation(angle, 0, 0, 1.0)
replicatorLayer.instanceCount = 12
replicatorLayer.instanceTransform = transform
replicatorLayer .addSublayer(aBar)
self.view!.layer .addSublayer(replicatorLayer)
aBar.opacity = 0.0
let animationFade:CABasicAnimation = CABasicAnimation(keyPath: "opacity")
animationFade.fromValue = NSNumber(float: 1.0)
animationFade.toValue = NSNumber(float: 0.0)
animationFade.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
animationFade.repeatCount = HUGE
animationFade.duration = 1.0
let aBarAnimationDuration:Double = 1.0/12.0
replicatorLayer.instanceDelay = aBarAnimationDuration
aBar .addAnimation(animationFade, forKey: "fadeAnimation")
}
如果您在视图中使用上方,在加载时显示此视图并在加载后隐藏,这非常酷且方便,并且不存在存储gif文件和使用图像视图加载的麻烦。
并通过更改aBar
图层的属性来获得不同的效果。
答案 3 :(得分:0)
对于这个特定的 gif,您可能想要使用 UIActivityIndicatorView
并使用 startAnimating()
使其动画化