0

我正在尝试将上下文旋转 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);
}

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

在此处输入图像描述

4

1 回答 1

2

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

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

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

于 2013-02-24T13:27:57.310 回答