我成功实现了一个适用于ipad和iphone的应用程序。 在那里我提供了选项,用户将应用程序的屏幕截图作为邮件附件发送。即使这样运作良好。 但是我的代码正在拍摄屏幕,而不管方向如何。我得到的图像始终处于纵向模式。 我想根据ipad / iphone的方向拍摄屏幕截图并将图像作为附件发送。我正在使用以下代码拍摄屏幕截图。
UIGraphicsBeginImageContext(screenWindow.frame.size);
[screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
答案 0 :(得分:2)
有一个类别由Hardy Macia实施:
http://www.catamount.com/forums/viewtopic.php?f=21&t=967
它在UIImage上有很多类别。 您想要使用的是:
UIimage* newImage = [imageToBeRotated imageRotatedByDegrees:90.0];
您的角度取决于设备的当前方向。 使用:
[[UIApplication sharedApplication] statusBarOrientation]
获取设备的方向。
希望这有帮助。
答案 1 :(得分:0)
除了已经旋转的实际窗口外,您可以渲染一个顶级视图。如果您正在显示状态栏,请尝试获取该视图的超级视图。否则这样的事情可能有用:
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
,但它应该接近它。