Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:renderInContext正在渲染窗口';温度为-90度时的内容物?_Ios_Ipad - Fatal编程技术网

iOS:renderInContext正在渲染窗口';温度为-90度时的内容物?

iOS:renderInContext正在渲染窗口';温度为-90度时的内容物?,ios,ipad,Ios,Ipad,我正在尝试获得外部屏幕支持并运行。不幸的是,我将窗口渲染为CGContextRef的方法导致窗口以-90度旋转(我没有指定任何旋转) UIGraphicsBeginImageContext (extwin.bounds.size); CGContextRef context = UIGraphicsGetCurrentContext(); if ([window screen] == [UIScreen mainScreen]) { CGContextSaveGSta

我正在尝试获得外部屏幕支持并运行。不幸的是,我将窗口渲染为CGContextRef的方法导致窗口以-90度旋转(我没有指定任何旋转)

UIGraphicsBeginImageContext (extwin.bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();

 if ([window screen] == [UIScreen mainScreen])
    {
        CGContextSaveGState(context);
        [[window layer] renderInContext:context];
        CGContextRestoreGState (context);
        break;
}
有人能告诉我怎么解决这个问题吗?我只将核心图形用于基本绘图,而不用于变换


谢谢。

CoreGraphics的基本坐标系与UIKit的基本坐标系不同。事实上,它在不同的设备上是不同的。听起来您需要弄清楚特定设备上的基本坐标系是什么,然后在尝试渲染窗口层之前对上下文应用CTM转换。这将允许您将CoreGraphics中的基础坐标系转换为与预期相同的坐标系


为了澄清这一点,当您创建一个新的上下文时,坐标系将被完整地记录下来。但是,窗口层使用的坐标系将与屏幕的基本CoreGraphics坐标系相匹配(这在不同的设备上是不同的)。这需要转换回与上下文的坐标系相匹配的坐标系,你可以通过找出正确的仿射变换,并将其应用于上下文和相关函数来实现这一点。

@mithra:老实说,我不太确定。也许你只需要
window.transform
就可以了。我试过了。。。在我编辑示例代码并发布上面的较短版本之前,它实际上已经包含在示例代码中。@密特拉:你到底为什么要在图形上下文中绘制窗口的图层?通常,外部屏幕支持是通过在第二个屏幕上弹出第二个窗口并在那里设置视图层次结构来实现的。@Mithras:您也可以尝试将窗口的所有子层绘制到上下文中,而不是绘制窗口本身。这应该允许您简单地转换上下文以匹配窗口的坐标系(即默认的UIKit坐标系)。没有足够的可用RAM,无法为外部显示提供第二个GUI。