Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 关于在iPhone上使用quartz 2D绘图_Objective C_Iphone Sdk 3.0_Quartz Graphics - Fatal编程技术网

Objective c 关于在iPhone上使用quartz 2D绘图

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

我有一个视图,它有一个drawRect方法,我知道这个方法是我控制视图在它上面画东西的唯一方法。因此,我尝试以这种方式来描述我的绘图逻辑:

- (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]];