1

为什么这段代码没有被正确执行。我试过 setNeedsDisplay 和 setNeedsLayout 但这段代码似乎没有被执行。即使它确实执行了,它也会在不应该执行的时候执行,并且执行错误,这意味着它在错误的位置绘制了随机长度的线。-(无效)drawNW {

NSLog(@"%f",x1);
NSLog(@"%f",y1);

CGContextSetStrokeColorWithColor(c, [UIColor blueColor].CGColor);
CGContextSetLineWidth(c, 10.0);
CGContextMoveToPoint(c, x1, y1);
CGContextAddLineToPoint(c, -(sqrtf(2)/2)*length + x1, ((sqrtf(2)/2)*length + y1));
CGContextStrokePath(c);

length = line.bounds.size.height;

}

长度、x1 和 y1 是由 NSTimer 以 0.1 秒的间隔不断变化的浮点数:

 NWTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(startMoving) userInfo:nil repeats:YES];

计时器调用这个调用drawNW的代码:

x1 = x1-2.5;
y1 = y1-2.5;
length= length+5;
[self drawNW];
4

1 回答 1

0

您的绘图代码(CGContext ...等)需要在您的类drawRect方法中。然后,您的计时器驱动代码应该只更改 x1、y1 和长度的值,然后调用[self setNeedsDisplay]. 这告诉 iOS 需要重绘视图,drawRect然后调用它。

至于在你想要的地方画线,我真的不知道你想用这段代码做什么。

于 2013-03-24T00:22:03.277 回答