1

一度だけ描画され、決して更新されない UIView 派生ビューがあります。

呼び出し[self setNeedsDisplay]ても効果はありません。何が原因でしょうか?

描画コードの有無は問わない

  • drawRect:、 また
  • drawLayer:inContext: (空の drawRect() が定義されている)

drawLayer:inContext が定義されていない場合は、drawRect が呼び出されます。ただし、1 回だけ (レイアウト中)。

- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx {
  // drawing occurs, but just once (during view layout)
}

`- (void)drawRect:(CGRect) rect {
  // empty -- never called
}

私が試したことの小さなリスト:

  • [自己設定NeedsDisplay]
  • [self.layer setNeedsDisplay]
  • [self.mySubLayer setNeedsDisplay]
  • self.contentMode = UIViewContentModeRedraw;
  • ビューを .nib からロードする代わりに手動で作成する (効果なし)
  • レイヤー (およびサブレイヤー) の使用を削除し、drawRect のみを使用 (効果なし)
4

1 に答える 1

5

したがって、これは回答済みとしてマークできます。メイン スレッドで UIKit メソッドを呼び出すようにしてください。

于 2013-03-12T02:12:04.917 に答える