Iphone 如何在CAShape层顶部显示UIImage?
我在Iphone 如何在CAShape层顶部显示UIImage?,iphone,ios,core-animation,uiimage,cashapelayer,Iphone,Ios,Core Animation,Uiimage,Cashapelayer,我在CAShapeLayer前面绘制UIImage时遇到问题。我在背景中有一个矢量图像,前面有一个图标。向量很重要,因为我最终将缩放并设置动画;我在屏幕上有很多这样的视图,所以为了提高性能,我希望在较低的级别上使用这些视图,而不是使用一堆UIImageView子视图 我试过: 将容器视图的图层类设置为CAShapeLayer 添加CAShapeLayer作为“我的容器”视图的子层 将我的容器的层和/或子层的内容设置为图像的CGImage 在容器视图的drawRect中手动绘制图像(不过我的Qu
CAShapeLayer
前面绘制UIImage
时遇到问题。我在背景中有一个矢量图像,前面有一个图标。向量很重要,因为我最终将缩放并设置动画;我在屏幕上有很多这样的视图,所以为了提高性能,我希望在较低的级别上使用这些视图,而不是使用一堆UIImageView
子视图
我试过:
- 将容器视图的图层类设置为
CAShapeLayer
- 添加
作为“我的容器”视图的子层CAShapeLayer
- 将我的容器的层和/或子层的
内容设置为图像的
CGImage
- 在容器视图的
中手动绘制图像(不过我的Quartz fu非常弱)drawRect
在大多数情况下,我会在形状后面绘制图像(我模糊地理解这是由于
CAShapeLayers
composite本身),或者根本没有图像。当然,这在不使用子视图的情况下是可能的?您是否尝试过将子层的zPosition设置为正值?默认值为0.0,因此使其大于零将使其在层次结构中处于“更高”的位置。我已经尝试了insertSublayer:over
和insertSublayer:down
,我认为这两种方法必须执行相同的操作。我想我遗漏了一些更基本的东西。我不认为它做了同样的事情。据我记忆所及,它只会重新排列子层数组中的对象,不会改变它们的位置。啊,你说得对。文档上说:将层插入到接收器的子层数组中,位于指定的子层之上。
我认为这意味着它将调整Z索引,但事实并非如此。那么设置zPosition是否最终为您实现了呢?出于好奇而问;)是的,我检查了子层
数组,事实上我所有的层的Z索引都是0。现在的问题是,当我的根层的内容为零时,是否有更好/更聪明的方法不涉及维护多个子层。。。