Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么动画后视图会消失?_Ios_Objective C_Cocoa Touch_Animation_Uiimageview - Fatal编程技术网

Ios 为什么动画后视图会消失?

Ios 为什么动画后视图会消失?,ios,objective-c,cocoa-touch,animation,uiimageview,Ios,Objective C,Cocoa Touch,Animation,Uiimageview,我一直在尝试使用此代码设置图像动画 - (void)viewDidLoad { dice.animationImages = [NSArray arrayWithObjects: [UIImage imageNamed:@"image1.png"], [UIImage imageNamed:@"image2.png"],

我一直在尝试使用此代码设置图像动画

  - (void)viewDidLoad
{

    dice.animationImages = [NSArray arrayWithObjects:
                            [UIImage imageNamed:@"image1.png"],
                            [UIImage imageNamed:@"image2.png"],
                            [UIImage imageNamed:@"image3.png"], nil];


    [dice setAnimationRepeatCount:3];
    dice.animationDuration = 1;


    [super viewDidLoad];
    // Do any additional setup after loading the view.
}
然后我有一个按钮,使动画播放

-(IBAction) animate:(id)sender {

[dice startAnimating];
}

一切都很完美。动画播放3次,每次持续1秒。但是,在动画播放3次后,骰子图像视图将从屏幕上消失。如何阻止这种情况发生,使图像不会消失,并且我可以对图像视图执行其他操作?

您是否在任何地方设置了
dice.image
?动画与imageView包含的图像不同,“在图像前面播放”,然后将被删除。我建议使用
UIImageView
startanimaginwithcompletionblock
方法:

- (void) viewDidload {

    dice.image = [UIImage imageNamed:@"image3.png"]; // big assumption on my part
                                                     // the assumption is that this is the image you want
                                                     // after animating

    dice.animationImages = [NSArray arrayWithObjects:
                           [UIImage imageNamed:@"image1.png"],
                           [UIImage imageNamed:@"image2.png"],
                           [UIImage imageNamed:@"image3.png"], nil];

    [dice setAnimationRepeatCount:3];
    dice.animationDuration = 1

    [super viewDidLoad];
}

“块”是一行或多行代码的块,等待动画完成后执行。如果您事先设置图像,它将在动画运行时显示在“后面”,并且可能不是您想要的。

@MarmiK
NSArray
无法保持零,它只是表示论证结束。我认为您的代码没有任何问题。问题必须在其他代码中。
dice.animationRepeatCount=0将使动画计数无限大。。。在你的例子中,动画只有3次。没有其他代码。一切都连接好了,是的,玛米克,我不想让它无限期地播放。我有点想让它看起来像是骰子在旋转并落在最终图像上,但是骰子在玩了3次后消失了好吧,你说的有道理,但是当我把代码放在我的viewDidLoad中时,它给了我一个与startAnimatingWithCompletionBlock相关的错误:这是“对于'UIImageView'没有可见的@interface声明选择器'startAnimatingWithCompletionBlock'”。您认为我这方面的重大假设是什么意思。谢谢。是的,我试图了解随机数,所以我做了一个随机数,并根据该数设置视图。例如,如果(randomInterger==1){dice.image=[ImageName:@“image1.png”};该应用程序运行良好,并显示了随机骰子面,但后来我决定让它看起来像是旋转并降落在随机数上,所以我将动画设置为在if语句上方播放,但骰子消失了。哎呀,我错了!我在UIImageView上使用了一个类别。我的脸是红色的,答案已编辑。那么,你在哪里你设置了
dice.image
?在
[dice startAnimating]
之前?没有,我是在[dice startAnimating]之后设置的.刚才我在if语句之后设置了它,它工作起来很有魅力,它旋转了一段时间,然后每次都显示一个随机数。非常感谢。我的逻辑是,首先我会运行动画,然后在它运行之后,它会将图像设置为随机骰子图片。但我想不会。你能告诉我为什么我必须设置骰子吗。im年龄在之前而不是之后。Thanks@Supert165我不确定当您尝试其他方法时,为什么没有设置图像而没有实际看到该代码;可能代码没有执行(在未到达的代码部分),或者文件名拼写错误(UIImage/UIImageView不会抱怨,只是无法加载图像)和c。