ビンゴアプリケーションで問題が発生しました。番号ジェネレーターで番号が選択されるたびに、プログラムで円を描いてみました。
このコードを試してみました。画像に円を描き、それをに保存しdocumentsDirectory
ます。また、呼び出し時にビューにロードするロード実装もあります。
//描く
-(void)draw
{
UIImage *image = [UIImage imageNamed:@"GeneralBingoResult.png"];
UIImage *imageWithCircle1 = [self imageByDrawingCircleOnImage1:image];
// save it to documents
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) lastObject];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"Output.png"];
NSData *imageData = UIImagePNGRepresentation(imageWithCircle1);
[imageData writeToFile:filePath atomically:YES];
NSLog(@"Saved new image to %@", filePath);
UIImage *image1 = [self loadImage];
[imageToDisplay setImage:image1];
}
//画像に円を描きます
- (UIImage *)imageByDrawingCircleOnImage1:(UIImage *)image
{
// begin a graphics context of sufficient size
UIGraphicsBeginImageContext(image.size);
// draw original image into the context
[image drawAtPoint:CGPointZero];
// get the context for CoreGraphics
CGContextRef ctx = UIGraphicsGetCurrentContext();
// set stroking color and draw circle
[[UIColor redColor] setStroke];
// make circle rect 5 px from border
CGRect circleRect = CGRectMake(420,40,
90,
90);
circleRect = CGRectInset(circleRect, 5, 5);
// draw circle
CGContextStrokeEllipseInRect(ctx, circleRect);
// make image out of bitmap context
UIImage *retImage = UIGraphicsGetImageFromCurrentImageContext();
// free the context
UIGraphicsEndImageContext();
return retImage;
}
//docディレクトリからロードします
- (UIImage*)loadImage
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithString: @"Output.png"] ];
UIImage* image = [UIImage imageWithContentsOfFile:path];
return image;
}
画像に円を描くことに成功しましたが、問題は、円を入れて画像を保存するときに、保存した画像documentsDirectory
を読み込んで、その画像でもう一度描画できるようにすることです。むしろ、次のように、ビンゴアプリのように実装するにはどうすればよいですか。
例:最初に、番号ジェネレーターで番号7が選択されます。出力:
次に、55番が選択されます。番号に別の円を追加します。出力:
ちなみに、私はを使用していUIScrollview
ます。そして、私はそれをに実装していScrollViewDidEndScrolling
ます。ありがとう。
UIScrollView
このコードも試しましたが、停止するたびに1つの円しか表示されません。
- (void) scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollview{
if ([[images objectAtIndex:index] intValue] == 1){
[circle setFrame:CGRectMake(420,40,90,90)];
[self.view addSubview:circle];
}else if([[images objectAtIndex:index] intValue] == 2){
[circle setFrame:CGRectMake(460,40,90,90)];
[self.view addSubview:circle];
}
}