Программное получение скриншота в приложении iPhone

Первой задачей, которую мне надо было реализовать под iPhone было масштабирование картинки в некоторой области экрана и получение видимой области изображения. Для создания контрола, который отображал бы картинку и позволял ее масштабировать руками использовался проект TapToZoom из ScrollViewSuite, который доступный здесь.

Чуток подправив функцию loadView получил такую часть кода:
/*
getNeededRect - это мой метод, который возвращает область экрана, в которой будет отображаться масштабируемая картинка.
uiView - это фейковый UIView, в который мы будем вставлять UIScrollView, для того, что бы координаты скриншота были относительно видимой области картинки в UIScrollView, а не относительно экрана.
*/
uiView = [[UIView alloc] initWithFrame:[self getNeededRect]];
// set up main scroll view
imageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[imageScrollView setBackgroundColor:[UIColor blackColor]];
[imageScrollView setDelegate:self];
[imageScrollView setBouncesZoom:YES];
[[self view] addSubview:imageScrollView];
[[self view] addSubview:uiView];//см. первый коммент.
    
// add touch-sensitive image view to the scroll view
TapDetectingImageView *imageView = [[TapDetectingImageView alloc] initWithImage:[UIImage imageNamed:@"WeCanDoIt.png"]];
[imageView setDelegate:self];
[imageView setTag:ZOOM_VIEW_TAG];
[imageScrollView setContentSize:[imageView frame].size];
[imageScrollView addSubview:imageView];
[uiView addSubview:imageScrollView];
[imageView release];

И собственно сам процесс получения скриншота и вывод его в файл:

UIGraphicsBeginImageContext(imageScrollView.frame.size);
[[self uiView].layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *image = UIImagePNGRepresentation(screenShot);
[image writeToFile:@"imageMY.png" atomically:YES];

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.