今まで見たことのない非常に奇妙なエラーがあります。私はこれまで何百回もこのコードを使用しましたが、何らかの理由で、afterDelayは完全に無視されています。
私のコード:
- (void)runIntro
{
if([self introDone])return;
UIImageView* back = [[UIImageView alloc] initWithFrame:[[AppDelegate shared] frame]];
[back setImage:[[AppDelegate shared] bgImage]];
[back setContentMode:UIViewContentModeScaleAspectFill];
[self.view addSubview:back];
UIImageView* target = [[UIImageView alloc] initWithFrame:CGRectMake(([[AppDelegate shared] width]-250)/2.0, ([[AppDelegate shared] height]-350)/2.0, 250, 72)];
[target setImage:[UIImage imageNamed:@"bpside.png"]];
[self.view addSubview:target];
Parabolic* wally = [[Parabolic alloc] initWithFrame:CGRectMake(([[AppDelegate shared] width]-200)/2.0, ([[AppDelegate shared] height]-314)/2.0+250, 200, 200)];
[wally setImage:[UIImage imageNamed:@"wallyside1.png"]];
[self.view addSubview:wally];
[self performSelector:@selector(moveWallyIntro:) withObject:wally afterDelay:1];
[self performSelector:@selector(moveWallyIntro:) withObject:wally afterDelay:2];
}
- (void)moveWallyIntro:(Parabolic*)wally
{
[wally runPBM:50 withDY:300 withDuration:0.5];
}
他のすべてのコードが正しく機能していることは知っていますが、何らかの理由でセレクターがすぐに実行されているため、大きな問題が発生します。このコードは、viewWillAppear
メソッドの最後で実行されています。私はこれまで何度もこの方法でプログラムを作成しましたが、これが発生するのはこれが初めてです。
アップデート:
UIImageViewを追加するコードを削除するとback
、これは問題ではなくなります。プログラムがハングしないように、このようなアスペクトフィル形式で巨大な画像(3000x2000)を追加するにはどうすればよいですか?私はiphone、ipadなどに同じ背景画像を使用しているので、網膜iPadには大きくする必要があります...