我需要在不使用drawrect方法的情况下绘制我的uiview,但我不知道如何在任何时间动态获取图形上下文?
例如:当用户从我的工具栏中弹出时选择添加行时,我需要添加一行。
答案 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:
内迭代该结构并绘制每个项目。
或者,将每一行设为自定义视图(或图层)并将其添加为子视图。