Я создаю собственное приложение на Xcode 4.3 и развертываю его для целевой iOS 5. Приложение в основном является создателем поздравительных открыток. У меня возникли проблемы с выяснением, как сохранить часть экрана из приложения.
Я хочу сделать следующее:
Я предлагаю пользователю кнопку с надписью "электронная почта". когда они нажимают кнопку, приложение должно «сохранить» их карточку как изображение, а затем «вставить» его в тело электронной почты.
Причина, по которой это отличается от других ответов на этом веб-сайте, заключается в том, что область, которую я хочу сохранить, состоит из 4 «элементов». Существует фоновая графика, которая является фоном наклоненной карты, затем есть текстовое поле, где пользователи могут ввести сообщение, а затем рядом с ним находится область изображения, где они могут выбрать свое собственное изображение для размещения на карте.
Вот фото того, о чем я говорю: http://marklopezdesigns.com/mydownloadz!/screenshotCard3.png
Как мне сохранить «композитный» из них в высоком разрешении?
И тогда как я могу получить это в теле сообщения электронной почты?
Причина, по которой я спрашиваю, как «сохранить», заключается в том, что я хочу иметь возможность предлагать пользователям другую кнопку с надписью «сохранить в фотопленку» и «отправить как сообщение». Я полагаю, что если я смогу понять, как сохранить это высокое разрешение в переменную, тогда я должен быть выключен и работать.
Заранее спасибо за помощь.
========
Вот решение ниже
======== ...итак, немного повозившись. Наконец-то получил то, что хотел. Вот кодовая база, которая у меня есть в моем методе, который срабатывает при нажатии кнопки «Сохранить в альбом»:
- (IBAction)savePhoto{
CGRect rect;
rect = CGRectMake(11,50 ,305, 262);
UIView *cardViewer = [[UIView alloc] initWithFrame:rect];
UIGraphicsBeginImageContext(cardViewer.bounds.size);
//make view background transparent
cardViewer.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
cardViewer.opaque = NO;
//stuff items into a subview for capturing
[self.view addSubview:cardViewer];
[cardViewer addSubview:self.tiltedCard];
[cardViewer addSubview:self.bigCardView];
[cardViewer addSubview:self.cardWords];
[cardViewer addSubview:self.photoView];
[cardViewer.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = CGImageCreateWithImageInRect([viewImage CGImage], rect);
UIImage *img = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);
//put everything back where it belongs
[self.view addSubview:self.tiltedCard];
[self.view addSubview:self.bigCardView];
[self.view addSubview:self.cardWords];
[self.view addSubview:self.photoView];
[cardViewer removeFromSuperview];
}