2012-01-23 9 views
0

私は2本の線を描く必要があります。両方の描画を行うために同じUIViewサブクラスを使用できますか?私は変数を使用する方法を変更した場合、私はUIViewのカスタムUIを作成した後にdrawRectが呼び出されましたか?

draw2D *myView = [[draw2D alloc] initWithFrame:myRect]; 

を作成した後、私はそれらの値を変更し、別の線を描画するためのdrawRectメソッドを呼び出すことができますか?

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context01 = UIGraphicsGetCurrentContext(); 

    CGContextSetLineWidth(context01, 1.0); 
    CGContextSetStrokeColorWithColor(context01, [[UIColor blackColor]CGColor]); 
    CGContextMoveToPoint(context01, 0, 0); 
    CGContextAddLineToPoint(context01, 800, 0); 
    CGContextStrokePath(context01); 

    CGContextRef context02 = UIGraphicsGetCurrentContext(); 

    CGContextSetLineWidth(context02, 1.0); 
    CGContextSetStrokeColorWithColor(context02, [[UIColor blackColor]CGColor]); 
    CGContextMoveToPoint(context02, 453, 0); 
    CGContextAddLineToPoint(context02, 453, 800); 
    CGContextStrokePath(context02); 
} 

答えて

1

もう一度呼ばれるようにそののdrawRectメソッドを強制的にビューにsetNeedsDisplayを呼び出します。

ビューを直ちに再描画しませんが、次回のビュー更新サイクルで再度描画する必要があるとフラグを付けます(更新はおよそ60秒ごとに発生します)。つまり、パフォーマンスペナルティなしでsetNeedsDisplayを複数回呼び出すことができます。

0

私は両方を描画するために同じUIViewのサブクラスを使用することができますか?

確認

私は変数を使用する方法を変更した場合、私はそれらの値を変更し、別の線を引くのdrawRectメソッドを呼び出すことができますか?

通常、あなただけのこれらの変数のためのパラメータと新しい関数やメソッドを作成したい:

static inline void imp_DrawLine(CGContextRef gtx, CGPoint start, CGPoint end) { 
    CGContextMoveToPoint(gtx, start.x, start.y); 
    CGContextAddLineToPoint(gtx, end.x, end.y); 
    CGContextStrokePath(gtx); 
} 

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef gtx = UIGraphicsGetCurrentContext(); 

    CGContextSetLineWidth(gtx, 1.0); 
    CGContextSetStrokeColorWithColor(gtx, [UIColor blackColor].CGColor); 

    imp_DrawLine(gtx, CGPointMake(0, 0), CGPointMake(800, 0)); 
    imp_DrawLine(gtx, CGPointMake(453, 0), CGPointMake(453, 800)); 
} 
+0

しかし、どのようにUIViewを再描画するのですか?私は直接drawRectメソッドを呼び出すことができるとは思わない? – Padin215

+0

上記の私の答えを参照してください。 –

+1

あなたは 'drawRect'を直接呼び出すべきではありません。代わりに 'setNeedsDisplayInRect:'または 'setNeedsDisplay'を使って無効にしてください。ビューシステムは適切な時間に描画するように求めます。 – justin

関連する問題