私はカスタムUIView
を持っていますが、これは-[drawRect:]
メソッドを使用して描画されています。カスタムビューの奇妙なアンチエイリアス
問題は、アンチエイリアスが非常に奇妙に作用し、黒い線が水平線または垂直線が非常にぼやけて描画されるためです。
CGContextSetAllowsAntialiasing
でアンチエイリアスを無効にすると、すべてが期待どおりに描画されます。
アンチエイリアシング:
alt text http://dustlab.com/stuff/antialias.png
いいえ(AAと期待される結果のように見える)アンチエイリアシング:
alt text http://dustlab.com/stuff/no_antialias.png
線幅が正確に1であり、そしてすべての座標が整数値であります。
CGContextStrokeRect
を使用して矩形を描画しても同じことが起こりますが、正確に同じCGRect
を描画した場合はUIRectStroke
となりません。
これに加えて、AppleはCocoa Drawing Guideの「Doing Pixel-Exact Drawing」のセクションでいくつかのヒントとサンプルコードを提供しています。http://developer.apple.com/mac/library/documentation/Cocoa/コンセプチュアル/ CocoaDrawingGuide/Transforms/Transforms.html#// apple_ref/doc/uid/TP40003290-CH204-BCICIJAJ –
ここでコードを一切使わずに回避する簡単な方法はhttp://www.techpaa.com/2012/06/avoidingです-view-edge-antialiasing.html – ShivaPrasad
@jeeva「UIViewEdgeAntialiasing」はレイヤーのエッジのみです。質問は、Quartzで描かれた線についてです。クォーツの描画は 'UIViewEdgeAntialiasing'の影響を受けません。 –