当应用程序处于横向模式时拍摄屏幕截图
Posted
技术标签:
【中文标题】当应用程序处于横向模式时拍摄屏幕截图【英文标题】:Taking Screen Shot When App is in Landscape Mode 【发布时间】:2012-12-03 11:13:55 【问题描述】:我正在开发一款只能在横向模式下使用的应用。在那个应用程序中,我有一个功能是截取该特定屏幕的屏幕截图。我已经实现了这段代码
UIGraphicsBeginImageContext(self.view.window.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = UIGraphicsGetImageFromCurrentImageContext();;
imageView.transform = CGAffineTransformMakeRotation(3.0 * M_PI / 2.0);
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(imageView.image, nil, nil, nil);
使用此代码,我可以在纵向模式下获得我的应用程序的屏幕截图。我想要横向模式。
【问题讨论】:
【参考方案1】:不要添加window
。如果你添加它,你的上下文大小是错误的。
// Just use self.view.bounds.size is OK
UIGraphicsBeginImageContext(self.view.bounds.size);
【讨论】:
【参考方案2】:也许晚了,但将其包装在 UIImageView 中实际上并不会旋转图像本身。 这是我编写的一些代码,可以从应用程序的整个窗口创建旋转图像。
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return [[UIImage alloc] initWithCGImage:[image CGImage] scale:1 orientation:UIImageOrientationLeft];
如果你想让它向右旋转,只需将 UIImageOrientationLeft 替换为 UIImageOrientationRight
【讨论】:
以上是关于当应用程序处于横向模式时拍摄屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章
当屏幕处于横向模式时,UIAlertview 以纵向模式显示
iPad应用程序首先进入纵向模式,然后在解锁屏幕后进入横向模式,在锁定时处于横向模式
我只想要一个屏幕处于纵向模式,而所有其他屏幕都处于横向和纵向模式 ios 9 应用程序