2

次のコードを使用して、CATiledLayer で線を描画しています。

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
    CGContextMoveToPoint(ctx, 130, 100.5);
    CGContextAddLineToPoint(ctx, 160, 100.5);
    CGContextSetRGBStrokeColor(ctx, 1, 0, 0, 1);
    CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);
    CGContextDrawPath(ctx, kCGPathStroke);
}

私が得るのは、この4pxのぼやけた線です:

http://img837.imageshack.us/img837/5002/fuzzyline.png

CATiledLayer を CALayer に変更すると、予想どおり線がシャープになり、幅が 2px になります。この動作は iPhone 4 でのみ発生します。3GS では、CALayer と CAtiledLayer の両方で線がはっきりしています。もちろん、3GS では線の太さは 1px です。

この動作を克服する方法を考えてください。

4

1 に答える 1

1

私はそれを見つけました:CATiledLayerはcontentsScale == 1.0で作成されます。contentScaleFactor == 2.0 でビューにアタッチすると、レイヤーが拡大され、ここで図面が台無しになります。

解決策: ビューにアタッチする前に、layer.contentsScale = 2.0 を設定します。

Apple は、ビューにアタッチされずに作成されたレイヤーは contentScale == 1.0 であると言っていますが、私のテストでは、CALayer は contentScale == 2 で作成されています。

于 2010-10-06T14:56:45.400 に答える