2009-05-25 5 views

答えて

19

私はあなたがこれを見ているところについてのより多くの情報を気に入っていますが、私の疑惑は、ピクセルで整列されていない画像を指しているということです。 Quartzでは、分数ピクセルを描画することができます(CGPointはNSIntegerではなくCGFloatを使用することを思い出してください)が、より高価であり、ぼやけてしまう傾向があります。分数ピクセルを実際に描画することはできません。そのため、Quartzはアンチエイリアス処理を行う必要があります。それは時間がかかり、確かにCore Animationのパフォーマンスを損なうでしょう。

Quartzは、小数点以下のピクセルを描画していることを警告することはありません。特にテキストには気を付けません。つまり、プログラムによるレイアウトを行っているときはいつでも考えておく必要があります。

+2

うん、それはイメージが整列していないということです。 – Kriem

+0

ヒントをありがとう。確かに私はフレーム原点座標の浮動小数点値を持っていました。それらをfloor()でラップした後、Insturmentのメッセージは消えました。しかし、パフォーマンスの向上は認められませんでした。 UIImageViewを回転させたときにも、Instrumentsはこれについて不平を言っています。だから私はそれほど悪くないと思う;) – Thanks

+0

画像ビューの幅や高さがソース画像の境界と一致しない場合や、ビューにアフィン変換が適用されている場合など、スケーリングが発生した場合は当てはまります。 –

2

ビューが正しく配置されていないと、レンダリングの前にアンチエイリアスになります。

この場合、「ミスアライン」とは、要求された表示ポイントが画面のピクセルに直接マップされない(たとえば、2つのピクセルの間にある可能性がある)ため、隣接する2つのピクセルに描画され、それが彼らの間に描かれたという錯覚を与えるために。

CGRectのX座標、Y座標、幅、および高さがCGFloatであり、小数点以下の値を許可するため、ビューのフレームが(Interface Builderで指定されずに)計算されるときにほとんど常に発生します。

たとえば、(200.5,35.5)を中心とする100.8pxの50.1pxボックスが有効なフレームであり、OSは管理できる最高の状態でレンダリングしようとします。 1つのピクセルに必要な追加の補間とアンチエイリアシングのオーバーヘッドは、古いハードウェアのパフォーマンスを大幅に低下させるのに十分です。

関連する問題