9

iPhone 4 でうまくスケールアップするアプリを作成しようとしています。現在、1 つの重要な部分を除いて、そのほとんどが完全にスケールアップしています。これが私のコードです:

- (void)drawInContext:(CGContextRef)context {
    UIGraphicsPushContext(context);

    CGContextSetGrayFillColor(context, 1.0f, 1.0f);
    CGContextFillRect(context, self.bounds);

    CGContextSetAllowsAntialiasing(context, true);
    CGContextSetShouldAntialias(context, true);

    CGContextSetAllowsFontSmoothing(context, true);
    CGContextSetShouldSmoothFonts(context, true);

    CGContextSetAllowsFontSubpixelQuantization(context, true);
    CGContextSetShouldSubpixelQuantizeFonts(context, true);

    CGContextTranslateCTM(context, 0.0f, self.frame.size.height);
    CGContextScaleCTM(context, 1.0f, -1.0f);

    CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);
    CGContextSelectFont(context, "CardKit", 30.0f, kCGEncodingMacRoman);
    CGContextSetTextDrawingMode(context, kCGTextFill);
    CGContextShowText(context, "A", sizeof("A"));

    UIGraphicsPopContext();
}

このショートは両方のデバイスで鮮明なテキストを生成しますが、残念ながら、両方のデバイスでぼやけたテキストを生成します. 表示方法は次のとおりです。

醜いテキスト http://files.droplr.com.s3.amazonaws.com/files/16285043/1gBp61.Screen%20shot%202010-06-26%20at%2021:25:09.png

その画像は、iPhone 4 で 100% ズームで撮影されています。これを修正する方法はありますか?

4

3 に答える 3

27

レイヤーを画面contentsScaleと同じに設定する必要があります。scale

layer.contentsScale = [UIScreen mainScreen].scale;

これにより、すべての iOS デバイス、Retina ディスプレイ、非 Retina ディスプレイで正しくスケーリングされます。正当な理由がない限り、2.0 (またはそれ以外のもの) にハードコーディングしないでください。

于 2010-12-07T03:22:35.793 に答える
2

前の回答のリンクは現在壊れています。新しいリンクはこれです。

于 2010-11-25T07:27:38.477 に答える
2

CALayers を扱っているため、レイヤーの contentsScale プロパティを 2.0 に設定する必要があります。

iOS 4 の iPhone アプリケーション プログラミング ガイドのこのセクションを参照してください。

于 2010-07-13T17:03:32.740 に答える