OK、私はぬりえアプリを作っています、そしてそれは絵がある場所のビューのスクリーンショットを撮る「保存」ボタンを持っています。
カラーリングする画像が6つあります。イントロページには6つのボタンがあり、それぞれが特定の着色ページにリンクしています。
1つを除いて、[保存]ボタンを含め、すべてが正常に機能しています。すべてのカラーリングビューの内容と機能は同じですが、1つの画像で、[保存]ボタンをクリックするたびにiPadがクラッシュします。
これが私のコードのいくつかです:
ボタンクリック時:
[self saveScreenshotToPhotosAlbum];
camFlash = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
[camFlash setBackgroundColor:[UIColor whiteColor]];
[camFlash setAlpha:0.0];
[cbHolder addSubview:camFlash];
[cbHolder bringSubviewToFront:camFlash];
[UIView beginAnimations:@"Flash-On" context:NULL];
[UIView setAnimationDuration:0.2];
[UIView setAnimationRepeatAutoreverses:NO];
[camFlash setAlpha:1.0];
[UIView commitAnimations];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"flash" ofType:@"wav"];
AVAudioPlayer *flashSFX = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:soundPath] error:NULL];
flashSFX.volume = 0.5;
flashSFX.numberOfLoops = 0;
self->camFlashSFX = flashSFX;
if ([flashSFX currentTime] != 0) [flashSFX setCurrentTime:0];
[flashSFX play];
[self performSelector:@selector(removeFlash) withObject:nil afterDelay:0.2];
フラッシュを削除します。
- (void) removeFlash
{
[camFlash removeFromSuperview];
}
スクリーンショットの場合:
- (UIImage*)captureView {
UIGraphicsBeginImageContext(CGSizeMake(1024, 768));
CGContextRef context = UIGraphicsGetCurrentContext();
[cbHolder.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
- (void)saveScreenshotToPhotosAlbum {
UIImageWriteToSavedPhotosAlbum([self captureView], nil, nil, nil);
}
これは、ぬりえを表示するボタン用です。
uc4 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tpUncolored1.png"]];
[uc4 setUserInteractionEnabled:YES];
[uc4 setFrame:CGRectMake(0, 0, 1024, 768)];
[cbHolder addSubview:uc4];
clrd4 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tpColored1.png"]];
[clrd4 setUserInteractionEnabled:YES];
[clrd4 setFrame:CGRectMake(0, 0, 1024, 768)];
[cbHolder addSubview:clrd4];
[UIView beginAnimations:@"fabe-out" context:NULL];
[UIView setAnimationDuration:1.5];
[clrd4 setAlpha:0.0];
[UIView commitAnimations];
[self performSelector:@selector(cb4) withObject:nil afterDelay:1.5];
そして、私はこのエラーを抱えています:
スレッド5:EXC_BAD_ACCESS(コード= 1、アドレス= 0xd9bbd40)