iPhone/приложение для iPad - взятие снимка экрана

Я успешно реализовал приложение, которое работает над iPad, а также над iPhone. В этом я предоставил возможность пользователю отправлять снимок экрана приложения как почтовое вложение. Даже это функционирует хорошо. Но мой код берет снимок экрана независимо от ориентации. Изображение, которое я получаю, всегда находится в режиме портрета. Я хочу взять снимок экрана в зависимости от ориентации ipad/iphone и отправить изображение как вложение. Я использую следующий код для взятия снимка экрана.

UIGraphicsBeginImageContext(screenWindow.frame.size);
[screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
1
задан Satyam 14 May 2010 в 02:50
поделиться

1 ответ

Может быть вид верхнего уровня, который вы могли бы визуализировать, помимо фактического окна, которое уже повернуто. Если вы показываете строку состояния, попробуйте просмотреть ее. В противном случае может сработать что-то вроде этого:

CGRect frame = screenWindow.frame;

if ( isLandscape ) {
  CGFloat t = frame.size.width;
  frame.size.width = frame.size.height;
  frame.size.height = t;
}

UIGraphicsBeginImageContext(frame.size);

if ( isLandscape ) {
  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextRotateCTM( context , M_PI_2 );
  CGContextTranslateCTM( context , ( frame.size.width - frame.size.height ) * 0.5 ,
    ( frame.size.height - frame.size.width ) * 0.5 );
}

...

Возможно, вам придется возиться с CGContextTranslateCTM , но он должен быть близок к этому.

0
ответ дан 3 September 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: