使用Quartz绘制通过的NSTimer(iPhone)每秒(Using Quartz to dra

2019-10-21 01:24发布

我是比较新的Objective-C的+石英和正在运行到什么可能是一个很简单的问题。 我有我使用通过石英绘制简单的矩形组成的自定义的UIView子类。 但是我想连上一个NSTimer,以便它绘制一个新的对象每一秒,下面的代码将绘制一个矩形,但绝不会再次战平。 该函数被调用(NSLog的的运行),但没有什么是画。

码:

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

    [self step:self];
    [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)(2) target:self selector:@selector(step:) userInfo:nil repeats:TRUE];

}

- (void) step:(id) sender {
    static double trans = 0.5f;

    CGContextSetRGBFillColor(context, 1, 0, 0, trans);
    CGContextAddRect(context, CGRectMake(10, 10, 10, 10));
    CGContextFillPath(context);

    NSLog(@"Trans: %f", trans);

    trans += 0.01;
}

背景是在我的接口文件为:

CGContextRef context;

任何帮助将不胜感激!

Answer 1:

你的榜样将无法工作。 其原因是drawRect:叫你当视图需要图,并不能在自己的画。

相反,尝试使用计时器从外部drawRect: viewDidLoad想到的),每次添加一个对象绘制到一个列表,并调用[view setNeedsDisplay]要求它重新绘制。 还有其他的方法,如果你需要更严格的控制,但它是第一个掌握应用程序流的基本知识是一个好主意。



文章来源: Using Quartz to draw every second via NSTimer (iPhone)