如何将上下文旋转90度并将原点设置为左上角?

时间:2013-02-24 09:13:42

标签: ios objective-c graphics

我想要的是将上下文旋转90度并将原点设置为左上角。这就是我尝试这样做的方式:

- (void)drawRect:(CGRect)rect {    

    CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f};
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColor(c, red);
    CGContextSetLineWidth(c, 2);

    CGContextRotateCTM(c, (-90.0 * M_PI/180.0)); // 90 degrees
    CGContextTranslateCTM(c, -rect.size.height, 0);
    CGContextAddRect(c, CGRectMake(0, 0, 100, 100));
    CGContextStrokePath(c);
}

我期望矩形在左上角完全可见。但这里看起来像这样:

enter image description here

1 个答案:

答案 0 :(得分:2)

您的代码实际上是正确的。旋转+平移将坐标系的原点移动到视图的左下角,x轴指向上方,y轴指向右方。如果将设备旋转90度,则在缩进时,原点将显示在左上角。

问题是视图矩形对于显示来说太大了。正如您在讨论中所说,矩形的高度为548,即4英寸显示屏的高度(减去状态栏)。因此,如果您在4英寸显示屏上启动应用程序,则会在底部剪切矩形。

您必须调整视图的大小/自动调整大小选项,以便在所有设备上正确显示。