Objective c 关于在iPhone上使用quartz 2D绘图
我有一个视图,它有一个drawRect方法,我知道这个方法是我控制视图在它上面画东西的唯一方法。因此,我尝试以这种方式来描述我的绘图逻辑:Objective c 关于在iPhone上使用quartz 2D绘图,objective-c,iphone-sdk-3.0,quartz-graphics,Objective C,Iphone Sdk 3.0,Quartz Graphics,我有一个视图,它有一个drawRect方法,我知道这个方法是我控制视图在它上面画东西的唯一方法。因此,我尝试以这种方式来描述我的绘图逻辑: - (void)drawRect:(CGRect)rect { //my drawing code... } 在我看来,我使用IB链接这个类 [myView setNeedsDisplay]; 它可以工作,所以,我设计在drawRect方法中有一个Command对象,这样我就可以基于Cmd动态地绘制。以下是我修改后视图中的代码: - (void)d
- (void)drawRect:(CGRect)rect {
//my drawing code...
}
在我看来,我使用IB链接这个类
[myView setNeedsDisplay];
它可以工作,所以,我设计在drawRect方法中有一个Command对象,这样我就可以基于Cmd动态地绘制。以下是我修改后视图中的代码:
- (void)drawRect:(CGRect)rect {
self.cmdToBeExecuted = [[DrawingSomethingCmd alloc] init];
[self.cmdToBeExecuted execute];
}
我的图纸SOMTHINGCMD:
@implementation DrawingSomethingCmd
-(void)execute{
//my drawing code;
}
它也有效。但问题是,如何动态分配self.cmdToBeExecuted。
另外,我更改了drawRect,如下所示:
- (void)drawRect:(CGRect)rect {
[self.cmdToBeExecuted execute];
}
因为我要把它和IB联系起来
IBOutlet myDrawingView *myView;
但是在我键入[myView……]之后,它不允许我获取变量cmdToBeExecuted。我已准备好在.h中访问我的变量:
@property (nonatomic, retain) Command *cmdToBeExecuted;
以及.m还:
@synthesize cmdToBeExecuted;
不要在绘图矩形内初始化命令。在创建视图时,在某个地方初始化默认值(可能在viewDidLoad中?这取决于您正在执行的操作),然后在需要时动态更新它们。因此:
- (void)drawRect:(CGRect)rect
{
[[self commandToBeExecuted] execute];
}
以及其他地方:
// dynamically update the drawing
[myView setCommandToBeExected:[[[DrawingSomethingCommand alloc] init] autorelease]];