0

次の問題があります。

2 つのカスタム UIView を作成しました。1 つ目は、コンテナーとして使用されるバブル ビューであり、CGContext メソッドで drawRect を使用してそれ自体を描画します。2 つ目は、NSAttributedStrings (iOS 5 が必要) を表示するために使用される UILabel のサブクラスとしてのテキスト ビューです。このテキスト ビューは、UILabel drawTextInRect: の指定されたサブクラス メソッドを使用します。

テキスト ビューは、addSubview を使用してバブル ビューに追加されます。どちらも透明な UIColor (clearColor) を背景として使用しています。パフォーマンスの最適化のために、以前のクリアな背景色を白に設定したいと思いました。

突然、視覚的なアーティファクトが表示されます。デバッグを改善するために、背景色を赤と青に設定しました。

問題

ご覧のとおり、赤い四角形「Lorem」、青い四角形「Lorem ipsum etc.」があります。緑色の長方形「ipsum dolor」は大丈夫です。これらはテキスト ビューの現在の位置とサイズです。赤い「Lorem」の下に青と赤の長方形があります。それらは視覚的なアーティファクトです。カスタムテキストビューをinitFrameで初期化したとき、それらは正確に開始長方形にあります。

setFrame: を使用して、ラベルのフレームを正しい位置に確実に移動しました。以前のラベルの四角形はまだ描画されていますが、なぜですか? [self setNeedsDisplay] も [self setNeedsLayout] も効果がありません。

再描画の原因と修正方法を教えてください。

4

0 に答える 0