Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在CAShape层顶部显示UIImage?_Iphone_Ios_Core Animation_Uiimage_Cashapelayer - Fatal编程技术网

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
  • 在容器视图的
    drawRect
    中手动绘制图像(不过我的Quartz fu非常弱)

在大多数情况下,我会在形状后面绘制图像(我模糊地理解这是由于
CAShapeLayers
composite本身),或者根本没有图像。当然,这在不使用子视图的情况下是可能的?

您是否尝试过将子层的zPosition设置为正值?默认值为0.0,因此使其大于零将使其在层次结构中处于“更高”的位置。

我已经尝试了
insertSublayer:over
insertSublayer:down
,我认为这两种方法必须执行相同的操作。我想我遗漏了一些更基本的东西。我不认为它做了同样的事情。据我记忆所及,它只会重新排列子层数组中的对象,不会改变它们的位置。啊,你说得对。文档上说:
将层插入到接收器的子层数组中,位于指定的子层之上。
我认为这意味着它将调整Z索引,但事实并非如此。那么设置zPosition是否最终为您实现了呢?出于好奇而问;)是的,我检查了
子层
数组,事实上我所有的层的Z索引都是0。现在的问题是,当我的根层的内容为零时,是否有更好/更聪明的方法不涉及维护多个子层。。。