【问题标题】:CoreGraphics or Quartz Drawing keeps clearingCoreGraphics 或 Quartz Drawing 不断清除
【发布时间】:2012-06-22 16:38:27
【问题描述】:

我正在使用

penLayer 是一个 UIView

UIGraphicsBeginImageContext(penLayer.frame.size);

CGContextRef  context = UIGraphicsGetCurrentContext();
    //My Drawing Code
penLayer.image = UIGraphicsGetImageFromCurrentImageContext();
[penLayer setNeedsDisplay];

这画得很好,但每次我调用 drawRect 它都会抹去以前的东西 目前我必须将所有绘图数据保存到字典中

有没有办法阻止它在每次调用 drawRect 时清除,并且可能有一个 UIButton 在需要时调用 clear ?

谢谢

【问题讨论】:

    标签: iphone ios5 core-graphics quartz-graphics


    【解决方案1】:

    有一个BOOL property on UIView called clearsContextBeforeDrawing。我假设你没有使用它。从文档中的讨论:

    设置为YES 时,在调用drawRect: 方法之前,绘图缓冲区会自动清除为透明黑色。此行为可确保在重绘视图内容时不会留下任何视觉伪影。如果视图的opaque 属性也设置为YES,则视图的backgroundColor 属性不能为nil,否则可能会出现绘图错误。该属性的默认值为YES

    如果您将此属性的值设置为NO,您有责任确保在您的drawRect: 方法中正确绘制视图的内容。如果您的绘图代码已经经过高度优化,则将此属性设置为 NO 可以提高性能,尤其是在滚动期间,可能只需要重绘视图的一部分。

    【讨论】:

    • 谢谢,这似乎不是它在情节提要中未选中,在 awakeFromNib 中它设置为 NO
    • 我不认为我的清除基于 drawRect 但可能基于 UIGraphicsBeginImageContext(penLayer.frame.size) 调用
    • 如果答案没有解决您的问题,您为什么要接受?
    猜你喜欢
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多