【发布时间】:2018-09-26 23:39:43
【问题描述】:
我正在尝试在嵌套在UIView 层中的CAShapeLayer 内渲染静态图像。形状的所有装饰(即边框、颜色、路径等)都可以在视图中正确渲染。
然而,为CALayer.contents 属性提供的CGImage 在任何时候都不会呈现在视图中(据我所知)。一段时间以来,我一直试图弄清楚这种行为,但对 Apple 的文档感到困惑:
如果您使用图层来显示静态图像,您可以将此属性设置为包含您要显示的图像的CGImage....此属性的值会导致图层使用您的图像,而不是创建单独的后备存储。
如果图层对象绑定到视图对象,您应该避免直接设置此属性的内容。视图和层之间的相互作用通常会导致视图在后续更新期间替换此属性的内容。
很高兴知道!这可能正是这种情况下发生的情况:UIView 正在更新和替换其内容。除了提供的解决方法不是很清楚,而且我找不到解决此问题的示例。
任何人对如何在 CAShapeLayer 上设置静态图像'间接'有任何建议,并避免它被超级视图(几乎立即)删除?
【问题讨论】:
-
据我所知。每个视图都有一个 calayer。然后您可以将您的形状图层添加到该图层。来自视图控制器的 Self.view.layer.addsublayer(myshapelayer)。那么你就不用担心内容问题了。请下次显示您的示例代码。所以我们可以更好地帮助您
标签: ios swift core-graphics core-animation cashapelayer