4

drawRect:rect 内から円を描く UIView があります。Retina ディスプレイに関する Apple dev 情報を読んだ後、Core Graphics を使用すると、描画が自動的に高解像度を利用するように見えました。ただし、この単純な円は、バッジ アイコンの同様の円と比べるとかなり分厚いように見えます。明らかに、光沢と影のあるものと比較していますが、私のものも同様に描かれていないことは明らかだと思います. Apple のアイコン バッジと私のサークルのスクリーンショットを撮ってみましたが、Mac ではほぼ同じように見えますが、電話で見ると違いは明らかです。ここに欠けている簡単なものはありますか?

これは、drawRect:rect で使用している描画コードです。

UIBezierPath* aPath = [UIBezierPath bezierPathWithOvalInRect:
                       CGRectMake(0, 0, 22, 22)];

[[UIColor whiteColor] setStroke];
[[UIColor redColor] setFill];

CGContextRef aRef = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(aRef, 10, 10);
aPath.lineWidth = 3;
[aPath fill];
[aPath stroke];

助けてくれてありがとう、ロブ

4

1 に答える 1

10

おっと、最初にアンチエイリアシングが必要でした:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShouldAntialias(context, YES);

描画前にこれを追加し、NO に設定して、その直後に別の円を描画しました。並んだ 2 つの円は、これが問題であったことを示しています。

于 2011-03-13T19:02:33.013 に答える