こんにちは、私はまだ Objective-C の初心者であり、誰かが私を助けてくれることを願っています。私がプログラムで作成したのは、UIScrollView
スワイプできる画像を内部に持つ です。次にUIButton
、押されたときに、選択された画像サブビューのスクリーンショットを撮り、それをカメラロールに保存することになっているものを作成しました(その部分は、コードのどこに追加すればよいかわかりません)。画像だけでなくスクリーンショットにしたい理由は、後でUILabels
画像の上に追加し、保存されたスクリーンショットにもそれらを表示したいからです。saveWallpaper メソッドでどのビューを使用するか、また現在のソリューションが機能するかどうかはよくわかりません。この回答リンクを見ましたこの実装で試すスクリーンショット コードを取得します。基本的には、 以外のすべてのスクリーンショットを撮りUIButton
、カメラロールに保存したいと考えています。どんな助けや指示も大歓迎です。スクリーンショットを撮ったり、特定の要素をキャプチャしてそれらを 1 つの画像に追加したりするアプローチを試すこともできます。ありがとうございました!
- (void)viewDidLoad
{
[super viewDidLoad];
int PageCount = 21;
NSMutableArray *arrImageName =[[NSMutableArray alloc]initWithObjects:@"1.png",@"2.png",@"3.png",@"4.png",@"5.png",@"6.png",@"7.png",@"8.png",@"9.png",@"10.png",@"11.png",@"12.png",@"13.png",@"14.png",@"15.png",@"16.png",@"17.png",@"18.png",@"19.png",@"20.png",@"21.png", nil];
scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
scroller.scrollEnabled=YES;
scroller.backgroundColor = [UIColor clearColor];
scroller.pagingEnabled = YES;
scroller.bounces = NO;
[self.view addSubview:scroller];
int width=scroller.frame.size.width;
int xPos=0;
for (int i=0; i<PageCount; i++)
{
UIImageView *ImgView = [[UIImageView alloc]initWithFrame:CGRectMake(xPos, 0, scroller.frame.size.width, scroller.frame.size.height)];
[ImgView setImage:[UIImage imageNamed:[arrImageName objectAtIndex:i]]];
[scroller addSubview:ImgView];
scroller.contentSize = CGSizeMake(width, 0);
width +=scroller.frame.size.width;
xPos +=scroller.frame.size.width;
}
UIButton *saveButton = [UIButton buttonWithType:UIButtonTypeCustom];
[saveButton addTarget:self
action:@selector(saveWallpaper:)
forControlEvents:UIControlEventTouchDown];
[saveButton setImage:[UIImage imageNamed:@"save.png"] forState: UIControlStateNormal];
[saveButton setImage:[UIImage imageNamed:@"savepressed.png"] forState: UIControlStateHighlighted];
saveButton.frame = CGRectMake([[UIScreen mainScreen] bounds].size.width/2, 396, 96.5, 42); //Make this in the center
[self.view addSubview:saveButton];
}
- (void)saveWallpaper:(id)sender
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
UIGraphicsBeginImageContextWithOptions(scroller.bounds.size, NO, [UIScreen mainScreen].scale);
}
else
{
UIGraphicsBeginImageContext(scroller.bounds.size);
[scroller.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
[data writeToFile:@"foo.png" atomically:YES];
}
}