2012-05-22 4 views
4

Я беру скриншот, используя следующий код:Скриншот Использование UIGraphicsBeginImageContextWithOptions для IPad 3 (Retina)

// Returns 1024x768 for iPad Retina 
    CGSize screenDimensions = [[UIScreen mainScreen] bounds].size; 

    // Create a graphics context with the target size 
    // (last parameter takes scale into account) 
    UIGraphicsBeginImageContextWithOptions(screenDimensions, NO, 0); 

    // Render the view to a new context 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [myView.layer renderInContext:context]; 

    // Save to Camera Roll 
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
    UIImageWriteToSavedPhotosAlbum(screenshot, self, nil, nil); 

    UIGraphicsEndImageContext(); 

Это работает, но у меня есть отчет от пользователя, что приводит к изображению в Camera Roll это не на разрешение сетчатки iPad. Скорее, он больше похож на разрешение iPad без сетчатки. (У меня нет iPad 3, чтобы проверить это).

Есть ли что-нибудь еще, что я делаю неправильно?

ответ

2

Итак, я наконец-то завладел физическим iPad Retina, и код, который я опубликовал, изначально работает нормально. Полученное изображение, похоже, находится в полном разрешении Retina.

0

Вот код, который я использую, и у меня нет проблем с iPad 3. Вы также можете подтвердить использование сетчатки iPad в iOS Simulator. Мой код также сохраняет файл в каталоге документов. Вы можете изменить его, как вы считаете нужным.

CGSize screenSize = [[UIScreen mainScreen] applicationFrame].size; 
    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 
    CGContextRef ctx = CGBitmapContextCreate(nil, screenSize.width, screenSize.height, 8, 4*(int)screenSize.width, colorSpaceRef, kCGImageAlphaPremultipliedLast); 
    CGContextTranslateCTM(ctx, 0.0, screenSize.height); 
    CGContextScaleCTM(ctx, 1.0, -1.0); 

    [(CALayer*)self.view.layer renderInContext:ctx]; 

    CGImageRef cgImage = CGBitmapContextCreateImage(ctx); 
    UIImage *image = [UIImage imageWithCGImage:cgImage]; 
    CGImageRelease(cgImage); 
    CGContextRelease(ctx); 
    CGColorSpaceRelease(colorSpaceRef); 
    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *filePath = [NSString stringWithFormat:@"%@/myscreenshot.jpg", docDir]; 

    [UIImageJPEGRepresentation(image, 1.0) writeToFile:filePath atomically:YES];