Снимок экрана на iPhone - PullRequest
       26

Снимок экрана на iPhone

1 голос
/ 23 июля 2010

У меня есть немного кода, который делает то, что я хочу, и делает снимок экрана. Apple уже сказала, что снимки экрана должны быть сделаны не с использованием UIGetScreenImage (), а с помощью UIGraphicsBeginImageContextWithOptions. Может ли кто-нибудь указать мне в правильном направлении. Вот фрагмент кода, который показывает, как я делаю это в данный момент.

CGImageRef inImage = UIGetScreenImage();
UIScreen* mainscr = [UIScreen mainScreen];
CGSize screenSize = mainscr.currentMode.size;
CGImageRef handRef;
if(screenSize.height > 500)
{
  handRef = CGImageCreateWithImageInRect(inImage, CGRectMake(320,460,1,1));
}
else
{
  handRef = CGImageCreateWithImageInRect(inImage, CGRectMake(160,230,1,1));
}
unsigned char rawData[4];
CGContextRef context = CGBitmapContextCreate(
  rawData,
  CGImageGetWidth(handRef),
  CGImageGetHeight(handRef),
  CGImageGetBitsPerComponent(handRef),
  CGImageGetBytesPerRow(handRef),
  CGImageGetColorSpace(handRef),
  kCGImageAlphaPremultipliedLast
);

Кто-нибудь, как я могу сделать это сейчас?

Спасибо за любые ответы заранее!

1 Ответ

2 голосов
/ 23 июля 2010

должно выглядеть примерно так:

UIGraphicsBeginImageContext(theView.bounds.size);
theView.layer.renderInContext(UIGraphicsGetCurrentContext());
UIImage* yourFinalScreenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Там, где theView является верхним представлением, которое вы хотите визуализировать, вы можете, например, использовать] [UIApplication sharedApplication] keyWindow].

Это выглядиткак будто вы получаете доступ только к частям вашего скриншота.С таким подходом это можно сделать проще.Просто используйте вид, который вы хотите захватить, это не обязательно должно быть окно.

...