1

我正在开发一个只会在横向的应用程序。在那个应用程序中,我有一个功能是截取该特定屏幕的屏幕截图。我已经实现了这段代码

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);

使用此代码,我可以在纵向模式下获得我的应用程序的屏幕截图。我想要横向模式。

4

2 回答 2

6

不要添加那个window。如果你添加它,你的上下文大小是错误的。

// Just use self.view.bounds.size is OK
UIGraphicsBeginImageContext(self.view.bounds.size);
于 2012-12-03T11:46:31.240 回答
0

也许晚了,但将它包装在 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

于 2013-08-05T15:04:42.880 回答