2

UIView のサブクラスを作成しました。このクラスでは、UIView 変数を宣言します。UIView 変数の DrawRect を呼び出したいのですが、DrawRect を呼び出すと、UIView 変数ではなく UIView クラスで描画されるため、どうすればそれを行うことができますか?

私の悪い英語でごめんなさい。

4

2 に答える 2

5

を呼び出すのではなく、サブビューdrawRectを呼び出します。setNeedsDisplay

于 2012-10-24T08:37:02.813 に答える
3

UIView もある UIViewCustomClass がありますか?このようなもの :

@interface MyView : UIView
{
  AnotherView *aView;
}

それは正しい ?

したがって、「aView」変数を再描画する場合は、MyView クラスで setNeedsDisplay メソッドをオーバーライドする必要があります。

.h

@interface MyView : UIView
{
      AnotherView *aView;
}

- (void)setNeedsDisplay;
-(void) drawRect:(CGRect) r;

@end

.m

@implementation MyView

- (void)setNeedsDisplay
{
  [super setNeedsDisplay];
  [aView setNeedsDisplay];
}

-(void) drawRect:(CGRect) rect
{
  //Do your own custom drawing for the current view
}

@end

編集: ここでは、 aView もカスタム クラス (AnotherView のタイプ) であるため、以前に MyViewClass で行ったように draw rect メソッドをオーバーライドできます。

AnotherView.m で:

@implemetation AnotherView

-(void) drawRect:(CGRect) rect
{
  //Do drawing for your aView variable ;)
}

@end

Apple のガイドラインによると、drawRect を直接呼び出さないでください (ドキュメントを参照) 。

于 2012-10-24T08:39:22.360 に答える