0

I have a function that draws a rectangle. If called within drawRect image is drawn perfectly. If I call the function directly it doesn't draw the rect. When I searched I found that we need to setNeedsDisplay to Yes. But still it doesn't work.

4

2 回答 2

2

drawRect:只有当系统调用您的方法时,您才能绘制到您的窗口。你不应该直接调用它。系统将在调用之前激活图形上下文,drawRect:并在调用之前和之后执行各种管理功能。

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

[view setNeedsDisplay:YES];

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

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

于 2013-09-09T12:58:05.737 回答
1

在此类问题中,最好的方法是使用布尔标志。drawRect:然后仅在设置标志时调用内部函数。

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

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

于 2013-09-10T05:12:05.377 回答