我有一个绘制矩形的函数。如果在drawRect中调用,则完美绘制图像。如果我直接调用该函数,则不会绘制rect。当我搜索时,我发现我们需要setNeedsDisplay
为是。但它仍然不起作用。
答案 0 :(得分:2)
系统调用drawRect:
方法时,您只能绘制到窗口。你不应该直接打电话。系统将在调用drawRect:
之前激活图形上下文,并在调用之前和之后执行各种内务处理功能。
要显式请求重绘整个窗口,请调用:
[view setNeedsDisplay:YES];
这将导致在下一个事件循环中调用drawRect:
方法。
文档详细介绍了所有这些内容:
答案 1 :(得分:1)
在这些问题中,最好的方法是使用布尔标志。只有在设置了标志时才调用drawRect:
内的函数。
现在,当您需要绘制图像时,将标志值设置为true,然后调用[view setNeedsDisplay:YES];
如果需要在任务完成后将if标志中的标志更改为false。