現在、リストを反復処理しており、要素の条件に基づいて、2 つの画像のうちの 1 つを表示したいと考えています。これは問題なく動作しますが、画像を表示する間に一時停止するにはどうすればよいですか。私は使用してみました:
for(
...
[myView addSubview:myImage]
sleep(1)
...
)
各チェックの後、これは何らかの理由で関数の終了を待ってから画像を表示します。
これの原因と回避方法はありますか?
現在、リストを反復処理しており、要素の条件に基づいて、2 つの画像のうちの 1 つを表示したいと考えています。これは問題なく動作しますが、画像を表示する間に一時停止するにはどうすればよいですか。私は使用してみました:
for(
...
[myView addSubview:myImage]
sleep(1)
...
)
各チェックの後、これは何らかの理由で関数の終了を待ってから画像を表示します。
これの原因と回避方法はありますか?
NSArray *imageArray = [NSArray arrayWithObjects:image1, image2, imageN, nil];
UIImageView *imageView = [[UIImageView alloc] init];
imageView.animationImages = imageArray;
imageView.animationDuration = [imageArray count]*3;
imageView.animationRepeatCount = 0;
[imageView startAnimating];
要素のアルファ/可視性を 0.0f/hidden に設定し、遅延のあるアニメーション ブロックを使用してビューを表示できます。継続時間を 0 より大きい値に設定することで、その過程で派手なアニメーションを得ることができます ;-)
[UIView animateWithDuration: 0.0
delay: 1.0
options: UIViewAnimationCurveEaseOut
animations: ^{
myView.alpha = 1.0f;
}
completion:^(BOOL finished){}];
「遅延後に実行」を使用して画像を表示する関数を作成できます。
-(void)displayImage {
[...get the image...]
[myView addSubview:myImage];
[self performSelector:@selector(displayImage) withObject:nil afterDelay:1.0];
}
sleep()
UI を更新しているスレッドをブロックするため、ここでは使用できません。
あなたができることは、2番目の画像を設定する別のメソッドを呼び出すことです:
for(
...
[myView addSubview:myImage]
// schedule the method.
[myView performSelector:@selector(addSubview:) withObject:mySecondImage afterDelay:1.0f];
...
)