在启动画面ios8上显示gif图像

时间:2015-05-27 09:26:02

标签: ios iphone ios8

我要求在我的应用中在启动画面上显示进度指示器。 这必须适用于iOS 8+。 如何在启动画面上显示进度指示器gif图像。任何想法。试图通过以下几种方式实现。

1.使用xcode6中引入的启动屏幕选项。但是stil没有关联的.m文件来自定义它以显示进度指示器。

3 个答案:

答案 0 :(得分:3)

您可以使用LaunchScreen.xib并添加指标,但只会非常简短地显示。

我会创建一个新的视图控制器,例如SplashViewController,包含你的进度动画(甚至是动画GIF,但我认为你必须使用uiwebview)并在启动时启动它。 通过这种方式,您可以控制希望显示的时长。

当您完成显示后,将其杀死并正常启动您的应用。

答案 1 :(得分:0)

您可以使用图像序列来显示动画,这里是代码:

NSMutableArray *images = [[NSMutableArray alloc] init];

    //don't forget to add your images to images array

    animationImageView.animationImages = images;
    animationImageView.animationDuration = 1.0;
    //animationImageView.clipsToBounds = NO;
    [self.view addSubview:animationImageView];
    [animationImageView startAnimating];

答案 2 :(得分:0)

Gif图像在UIImageView中无法播放,您需要使用类别或其他内容:

我认为应该这样做:https://github.com/mayoff/uiimage-from-animated-gif/

或者如果您希望将其作为进度点击,则可以使用以下内容:GiFHUD-Swift

编辑:Giorgos也是对的,您应该使用新的视图控制器,或者您可以直接向窗口添加UIImage以控制启动画面的持续时间。我在我的一个应用程序中使用此方法完成了它:

- (void)showSplashWithDuration:(CGFloat)duration
{
    // add splash screen subview ...

    UIImage *image          = [UIImage imageNamed:@"splash.png"];
    UIImageView *splash     = [[UIImageView alloc] initWithImage:image];
    splash.frame            = self.window.bounds;
    splash.autoresizingMask = UIViewAutoresizingNone;
    [self.window addSubview:splash];


    // block thread, so splash will be displayed for duration ...

    CGFloat fade_duration = (duration >= 0.5f) ? 0.5f : 0.0f;
    [NSThread sleepForTimeInterval:duration - fade_duration];


    // animate fade out and remove splash from superview ...

    [UIView animateWithDuration:fade_duration animations:^ {
        splash.alpha = 0.0f;
    } completion:^ (BOOL finished) {
        [splash removeFromSuperview];
    }];
}

&安培;你可以在didFinishLaunchingWithOptions中调用它,如下所示:

[self showSplashWithDuration:3.0];