2013-12-06 4 views
1

Я пытаюсь захватить снимок экрана подробного просмотра в ландшафтном макете/макет детали на iPad. Это код, который я пытался использовать.Скриншот IPad подробно посмотреть ориентацию неправильно

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; 
CGRect rect = [self.view bounds]; 
UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0.0f); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[keyWindow.layer renderInContext:context]; 
UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

С этим связаны две проблемы. - неправильная ориентация захвата экрана. Я получаю изображение, которое находится на его стороне. - Ширина = 703 & Высота = 768 измерений меняются на захват экрана, поэтому в конечном итоге я получаю часть основного вида в окне снимка подробного экрана. Что я здесь делаю неправильно? Благодаря!

ответ

1

попробовать этот способ

-(UIImage *)captureScreenForRect:(CGRect)frame 
{  
    CALayer *layer; 
    layer = self.view.layer; 
    UIGraphicsBeginImageContext(self.view.bounds.size); 
    CGContextClipToRect (UIGraphicsGetCurrentContext(),self.view.bounds); 
    [layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return screenImage; 
} 

передать ваши детали вид кадра прямоугольник для выше метода. надеюсь, что это поможет вам

«Официальный» метод скриншота здесь: (https://developer.apple.com/library/ios/qa/qa1703/_index.html)

+0

Brilliant! Он отлично работает для iPad и iPhone. Однако вам не нужен передаваемый параметр (CGRect). Незначительное негры. – Seoras

+0

рад, что это помогло вам ....... да, но может использовать этот метод как обычный метод, не дублируя код, если вы хотите использовать его где-то еще, просто нужно передать правильный размер, который вы хотите ... ...ура приятель ;) –

1

Если вам это нужно для перехода или для графического эффекта и вашей с помощью IOS 7 - я предлагаю вам не на самом деле создать образ. Изображение может быть тяжелым для создания (например, на iPAd Retina 3rd Gen) и тяжелым для памяти.

Запуск iOS 7 Apple дает вам гораздо более быструю функцию моментального снимка на UIView (что, кстати, также способ реализации пользовательских переходов в контроллерах вида, эффект размытия и т. Д.), Который выполняется намного быстрее, чем создание фактического изображения.

На UIView вы можете выполнить: - (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates

Или, если вам нужна полная иерархия вида размытого зрения:

- (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates

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