Ios 创建动画加载帧w/条件非动画启动屏幕

Ios 创建动画加载帧w/条件非动画启动屏幕,ios,animation,nsthread,Ios,Animation,Nsthread,嗨,我的应用程序中的一些视图控制器在加载时进行了一些非常密集的图像处理 所以我想做的是创建一个全屏动画图像(我已经知道如何使用图像视图)并继续动画,直到视图控制器完全准备好使用。我知道我必须为这个动画创建另一个线程(我想),并以某种方式使这个图像循环,直到某个条件为真?任何人都有好的教程可以分享,或者有一些有用的代码。我在网上找到的只是动画启动图像教程,这些教程只在程序员设定的特定时间内运行。没有任何教程解释如何执行此操作,直到特定条件为真。诀窍是不要将其视为一个等待周期。您应该将其视为两个不同

嗨,我的应用程序中的一些视图控制器在加载时进行了一些非常密集的图像处理


所以我想做的是创建一个全屏动画图像(我已经知道如何使用图像视图)并继续动画,直到视图控制器完全准备好使用。我知道我必须为这个动画创建另一个线程(我想),并以某种方式使这个图像循环,直到某个条件为真?任何人都有好的教程可以分享,或者有一些有用的代码。我在网上找到的只是动画启动图像教程,这些教程只在程序员设定的特定时间内运行。没有任何教程解释如何执行此操作,直到特定条件为真。

诀窍是不要将其视为一个等待周期。您应该将其视为两个不同的事件:加载开始和加载完成

加载开始时,您将创建承载.gif的图像视图,并显示它:

[self.imageView startAnimating];
[self.view addSubview:self.imageView];
或者,如果您希望它淡入:

self.imageView.alpha = 0;
[self.imageView startAnimating];
[self.view addSubview:self.imageView];
[UIView animateWithDuration:0.5 animations:^{
    self.imageView.alpha = 1.0;
}];
然后,加载完成后,只需再次淡出:

[UIView animateWithDuration:0.5 animations:^{
    self.imageView.alpha = 0;
} completion:^(BOOL finished) {
    [self.imageView stopAnimating];
    [self.imageView removeFromSuperview];
}];
有关如何使用UIImageView将.gif分解为帧并设置动画的信息,请参见。使用这种方法,您不必关心加载需要多长时间。您的imageView将显示并自动保持循环,直到您明确删除它

编辑:

如果要使用UIKit制作自定义动画,可以将动画放在自动重复(和自动反转?)动画块中:

[UIView animateWithDuration:0.5
                      delay:0.0
                    options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
                 animations:^{
                     // Do some animation
                 } completion:nil];
然后,在加载完成时取消动画:

[self.view.layer removeAllAnimations];

您需要使用UIKit执行自定义动画,还是简单的.gif就可以了?简单的.gif可以作为一个例子,但我可能正在使用UIKit执行自定义动画。我应该在哪里将.gif添加到imageView?如果您使用的是故事板,您的imageView将为您初始化,所以您只需设置self.imageView.image=yourgf,否则您可以在创建图像视图时执行此操作:
self.imageView=[[UIImageView alloc]initWithImage:yourgf]关于如何实际制作.gif动画的任何提示我只制作过自定义动画我只是从互联网上随机抽取了一个.gif来快速尝试你的代码我自己从来没有实际制作过gif,对不起!我想你可以在photoshop中制作它们,如果你有权使用它的话。它已经被创建了。我把它从互联网上取下来试试这个例子。。当我在Xcode中单击时,我看到了该动画,但在图像视图中加载时,它只显示动画的第一帧?它应该自己走吗?