приложение для iphone / ipad - снимок экрана - PullRequest
1 голос
/ 14 мая 2010

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

UIGraphicsBeginImageContext(screenWindow.frame.size);
[screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Ответы [ 2 ]

2 голосов
/ 24 января 2012

Существует категория, реализованная Hardy Macia по адресу:

http://www.catamount.com/forums/viewtopic.php?f=21&t=967

В UIImage есть несколько категорий. Тот, который вы хотите использовать:

UIimage* newImage = [imageToBeRotated imageRotatedByDegrees:90.0];

Ваш угол будет зависеть от текущей ориентации вашего устройства. Использование:

[[UIApplication sharedApplication] statusBarOrientation]

чтобы получить ориентацию вашего устройства.

Надеюсь, это поможет.

0 голосов
/ 14 мая 2010

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

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, но это должно быть близко к этому.

...