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 に答える