在UIImageView IOS中加载动画gif

时间:2016-02-22 23:36:10

标签: ios uiimageview uiimage gif animated

我将此gif放入我的资产档案Gif

资产的名称是loading_apple但是当我添加以下代码时,我得到一个nullpointer异常错误:

let img = UIImage (named: "loading_apple")

那我怎么能显示这个gif? :(

希望有人可以帮助我。

4 个答案:

答案 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() 使其动画化