Я успешно реализовал приложение, которое работает над iPad, а также над iPhone. В этом я предоставил возможность пользователю отправлять снимок экрана приложения как почтовое вложение. Даже это функционирует хорошо. Но мой код берет снимок экрана независимо от ориентации. Изображение, которое я получаю, всегда находится в режиме портрета. Я хочу взять снимок экрана в зависимости от ориентации ipad/iphone и отправить изображение как вложение. Я использую следующий код для взятия снимка экрана.
UIGraphicsBeginImageContext(screenWindow.frame.size);
[screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Может быть вид верхнего уровня, который вы могли бы визуализировать, помимо фактического окна, которое уже повернуто. Если вы показываете строку состояния, попробуйте просмотреть ее. В противном случае может сработать что-то вроде этого:
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
, но он должен быть близок к этому.