2015-04-13 5 views
2

Я попробовал два разных способа создать скриншот, но, к сожалению, они не работают, как мне нужно, у меня есть RMMapView, который пуст на скриншоте. Когда я создаю моментальный снимок вручную на своем устройстве, он отлично работает, а вид карты отображается на экране. Поэтому я хотел бы добиться того же результата программным путем. Возможно ли, как я пытался? Или как правильно это сделать? (Для того, чтобы воспроизвести этот тип экрана)По умолчанию iPhone скриншот программно

- (UIImage *) takeScreenshot { 

    //1. version 
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale); 

    [self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES]; 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 


    //2. version 
    UIGraphicsBeginImageContext(self.view.bounds.size); 

    CGContextRef context=UIGraphicsGetCurrentContext(); 
    [self.view.layer renderInContext:context]; 

    UIImage *image=UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return image; 

} 
+0

когда вы называете takeScreenshot? –

+0

@MustafaIbrahim после нажатия кнопки. – gatto

+0

Отображается ли карта на экране при нажатии кнопки? –

ответ

0

На самом деле вы можете использовать метод, называемый takeSnapshot в RMMapView.

UIImage *image = self.mapView.takeSnapshot 

[Update] Вы можете попробовать этот метод вместо

CGSize size = self.view.bounds.size; 
CGRect cropRect = self.mapView.bounds 

UIGraphicsBeginImageContext(size); 
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage * mapImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

CGImageRef imageRef = CGImageCreateWithImageInRect(mapImage.CGImage, cropRect); 
UIImage * cropImage = [UIImage imageWithCGImage:imageRef]; 
CGImageRelease(imageRef); 

UIImageWriteToSavedPhotosAlbum(cropImage, nil, nil, nil); 

UIGraphicsEndImageContext(); 

УДАЧИ

+0

Я знаю это решение, оно возвращает другое изображение, а затем текущий вид и имеет плохое качество. Именно по этой причине я хочу воспроизвести «ручной» снимок экрана. – gatto

+0

Вы правы. есть открытая проблема по той же причине в RMMapView Github repo https://github.com/mapbox/mapbox-ios-sdk/issues/589 –

+0

Спасибо, я уже проверил это. К сожалению, у меня нет времени, поэтому самым быстрым способом будет скриншот. – gatto

Смежные вопросы