drawViewHierachyInRect以错误的方向绘制iPad

时间:2014-02-05 19:16:34

标签: ios objective-c uiview ios7 core-graphics

我正在尝试拍摄我的iPad应用程序的屏幕截图,然后创建一个UIImage,然后我可以模糊,并做一些有趣的事情。我正在使用以下代码截取屏幕截图,该代码运行正常:

- (UIImage *)convertViewToImage
{
    UIGraphicsBeginImageContext(self.bounds.size);
    [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

但是,我的应用仅支持横向显示,并且显示的屏幕截图向左旋转90度(纵向)。我在UIWindow上调用此方法,我知道UIWindow使用了不同的坐标系,但我无法弄清楚如何旋转UIImage。我在这里阅读了几个类似的问题并尝试了他们的解决方案(使用initWithCGImage:scale:orientation,并重新绘制图像),但由于它是全屏iPad图像,如果我旋转它,它似乎保持实际的纵向尺寸,但将旋转的图像拉伸到其中。

简而言之,上面的方法给了我我需要的东西,但是在768x1024,而不是1024x768。我需要将它向左旋转90度,与预览,Photoshop等中的旋转完全相同。

1 个答案:

答案 0 :(得分:2)

您可以在根视图控制器的视图中调用它。它具有与窗口相同的内容,但具有设备的方向。