重绘drawRect函数

时间:2013-09-09 12:49:03

标签: objective-c cocoa

我有一个绘制矩形的函数。如果在drawRect中调用,则完美绘制图像。如果我直接调用该函数,则不会绘制rect。当我搜索时,我发现我们需要setNeedsDisplay为是。但它仍然不起作用。

2 个答案:

答案 0 :(得分:2)

系统调用drawRect:方法时,您只能绘制到窗口。你不应该直接打电话。系统将在调用drawRect:之前激活图形上下文,并在调用之前和之后执行各种内务处理功能。

要显式请求重绘整个窗口,请调用:

[view setNeedsDisplay:YES];

这将导致在下一个事件循环中调用drawRect:方法。

文档详细介绍了所有这些内容:

答案 1 :(得分:1)

在这些问题中,最好的方法是使用布尔标志。只有在设置了标志时才调用drawRect:内的函数。

现在,当您需要绘制图像时,将标志值设置为true,然后调用[view setNeedsDisplay:YES];

如果需要在任务完成后将if标志中的标志更改为false。