我对 Objective-C + Quartz 比较陌生,遇到的问题可能非常简单。我有一个自定义 UIView 子类,我用它通过 Quartz 绘制简单的矩形。不过,我试图连接一个 NSTimer,以便它每秒绘制一个新对象,下面的代码将绘制第一个矩形,但永远不会再次绘制。该函数正在被调用(NSLog 正在运行),但没有绘制任何内容。
Code:
- (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;
任何帮助将不胜感激!
你的例子不会起作用。原因是drawRect:
当视图需要绘制并且它无法自行绘制时,会为您调用。
相反,尝试从外部使用计时器drawRect:
(viewDidLoad
我想到了),每次添加一个要绘制的对象到列表中,然后调用[view setNeedsDisplay]
请求重新绘制。如果您需要更严格的控制,还有其他技术,但最好首先掌握应用程序流程的基础知识。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)