0

私は uiview をサブクラス化して uiview で描画しており、描画コードは

- (void)drawRect:(CGRect)rect

方法。これを繰り返し呼び出して、ラインの効果を高めています。ただし、メソッドが呼び出されるたびにビューがクリアされます。私の完全なコードはビューにプロットされた小さな線のみです

- (void)drawRect:(CGRect)rect
{
    static int i=0;
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    CGContextSetLineCap(context, kCGLineCapRound);
    CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 0.5);       
    CGContextSetLineWidth(context, 10.0);        
    CGContextMoveToPoint(context, i, i);
    CGContextAddLineToPoint(context, i+10, i+10);  
    NSLog(@"-----%d",i);    
    CGContextClosePath(context);            
    CGContextDrawPath(context, kCGPathFillStroke); 
    i++;
    if(i<100)
    [self performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0.033];
}

ラインの成長効果を出すにはどうすればよいですか

4

2 に答える 2

1

この場合、すべてのビューを再描画するため、を使用する必要がありますCGContextMoveToPoint(context, 0, 0);。したがって、すべての描画を実行するたびに。また、小さな部分だけを再描画するように呼び出すこともできますsetNeedsDisplayInRect:が、この場合、すべてのビューが再描画されたときにすべての描画を実行するためにどの長方形を取得するかを調べる必要があります。

于 2012-04-19T07:40:55.253 に答える
0

DrawRectは、呼び出されるたびにすべての UI を描画します。既存のパーツへの追加パーツではありません。実際、現時点では、毎回 1 本の線を描画しています。必要な効果を得るには、反復ごとにサイズが大きくなる長方形を描画する必要があります。

于 2012-04-19T08:45:58.227 に答える