【问题标题】:Disable clipping in CALayer在 CALayer 中禁用剪辑
【发布时间】:2010-12-27 21:49:48
【问题描述】:

如何在 CALayer 中禁用剪辑?我正在覆盖 drawInContext,但我希望能够绘制延伸到 CALayer 边界之外的线条,并且我不想在父层上进行单独的绘图传递来实现这一点。

【问题讨论】:

    标签: iphone quartz-graphics calayer


    【解决方案1】:

    您不能在 CALayer 或 UIView 的范围之外使用 Quartz 进行绘制。正如 Noah 建议的那样,您需要将图层的边界扩大一定数量才能绘制出来。

    只要您的父层的masksToBounds 属性设置为NO,您仍然可以这样做而不必在父层中进行一些绘图。这样,即使您的子图层超出了父图层的边缘,它仍然可以正确绘制。

    【讨论】:

    • 你知道这会对性能产生什么样的影响吗? (如果有的话)。我有 100 到 200 层,这将增加另外 100 到 200 层...
    • @JJC - 这种方法不会添加任何层,只需要扩展现有层的边界。绘制较大区域的速度较慢,但​​希望这将是一次性操作。更大的层确实会使用更多的内存,但听起来你只是想扩展一点。
    • 我明白了,然后我只需要更改我的绘图代码以在图层的中心进行绘制,然后适当地绘制线条。我认为这可能是最好的解决方案,谢谢!
    【解决方案2】:

    好吧,CALayer 有一个masksToBounds 属性(设置为NO,禁用对图层边界的默认裁剪),但我认为它不会影响图层本身的绘制——只是裁剪它的子层。如果由于某种原因无法扩展图层本身的框架,则需要在图层上设置该属性,添加具有要在其中绘制的尺寸的更大子图层,然后将绘图代码移动到该子图层.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      • 2014-10-15
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      相关资源
      最近更新 更多