在不使用drawrect方法的情况下获取UIView的上下文

时间:2011-07-05 11:16:25

标签: iphone uiview draw

我需要在不使用drawrect方法的情况下绘制我的uiview,但我不知道如何在任何时间动态获取图形上下文?

例如:当用户从我的工具栏中弹出时选择添加行时,我需要添加一行。

2 个答案:

答案 0 :(得分:5)

这不可能。您必须使用某种标记来指示新行,然后调用setNeedsDisplay方法以便它调用drawRect:方法。您可以在drawRect:方法中检查标记并相应地绘制线条。

你必须保存状态。可能添加了一系列行,以便在调用drawRect:方法时可以使用它来绘制视图。

替代

您可以使用图像视图来实现此目的。你可以这样做,

UIGraphicsBeginImageContext(imageView.frame.size);
[imageView.image drawInRect:CGRectMake(0, 0, imageView.frame.size.width, imageView.frame.size.height)];
/* Draw line here */
imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

这样您就不会拥有状态,只需将线条添加到图像中即可。

答案 1 :(得分:2)

您的视图 没有drawRect:之外的图形上下文。 <{1}}以外的任意绘图调用都不能让它们持久存在。

如果需要动态地向视图中添加行等,则必须先将行存储在数组或其他结构中,然后在drawRect:内迭代该结构并绘制每个项目。

或者,将每一行设为自定义视图(或图层)并将其添加为子视图。