嗨,我是电话编程的新手。谁能告诉我使用以下代码我正在使用以下代码自动显示一个UIImage
。在这里,一旦所有UIImages
显示它都停止了,我UIImages
存储在NSArray
中,但是一旦所有UIImages
完成,我该如何停止它。
- (void)displayPicture{
for (NSString* path in array000) {
[blaukypath2 addObject:[UIImage imageWithContentsOfFile:path]];
NSLog(@"%@",path);
}
NSLog(@"%@",blaukypath2);
NSLog(@"%icurrentImage DIDF",currentImage);
currentImage++;
if (currentImage >= blaukypath2.count) currentImage = 0;
UIImage *blaukyyimag = [blaukypath2 objectAtIndex:currentImage];
[img10 setImage:blaukyyimag];
NSLog(@"%icurrentImage++ DIDF",currentImage);
}
如果你使用UIImage,最简单的事情是你可以这样做:
myUIImage = nil;
不过,请确保myUIImage已连接到您的storyboard
或xib
文件中。
我无法确切地说出您的代码是如何工作的,但如果它在某种for
或while
循环中,这些行可能是您的问题:
currentImage++;
if (currentImage >= blaukypath2.count) currentImage = 0;
您正在递增currentImage
,但是当您到达blaukypath2
中的最后一个图像时,您将currentImage
设置为 0 并重新开始。试试这个:
if (currentImage < blaukypath2.count)
{
currentImage++;
}
增加currentImage
。确保仅在您仍在数组blaukypath2
循环中时才执行此操作。图像img10
也应仅在您仍在该循环中时才显示。
if (currentImage < blaukypath2.count) {
UIImage *blaukyyimag = [blaukypath2 objectAtIndex:currentImage];
[img10 setImage:blaukyyimag];
NSLog(@"%icurrentImage++ DIDF",currentImage);
currentImage++;
}
我在你的代码中看到两个问题。
1 - 您应该将图像初始化循环从"完成播放方法"中移动,因为它是大量的。您需要在某些初始化方法中执行此操作一次。在同一个地方,您需要将当前图像初始化为零。
2 - 要仅显示每个图像一次,您需要在"完成播放方法"中使用以下代码
if (currentImage < blaukypath2.count) {
UIImage *blaukyyimag = [blaukypath2 objectAtIndex:currentImage];
[img10 setImage:blaukyyimag];
NSLog(@"%icurrentImage++ DIDF",currentImage);
currentImage++;
} else {
[img10 setImage:nil];
NSLog(@"all images was displayed DIDF");
}