Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Ios 如何在CALayer中使用切片图像_Ios_Uiimageview_Calayer_Assets - Fatal编程技术网

Ios 如何在CALayer中使用切片图像

Ios 如何在CALayer中使用切片图像,ios,uiimageview,calayer,assets,Ios,Uiimageview,Calayer,Assets,我将图像存储在资产目录中,并设置为进行切片(根据我的背景,我称之为9层切片)。这允许您使用具有圆角或成形角的图像,以便在以不同大小绘制图像时保持角的纵横比。图像的中间会拉伸以适应不同的大小 我在资产目录中设置了切片,如果我在UIImageView中使用图像,它将按预期工作 但是,如果我试图通过设置内容将图像与CALayer一起使用,它将不起作用。如果不使用切片,图像将按预期显示 我是这样设置的: borderImageLayer = [CALayer layer]; borderImageLay

我将图像存储在资产目录中,并设置为进行切片(根据我的背景,我称之为9层切片)。这允许您使用具有圆角或成形角的图像,以便在以不同大小绘制图像时保持角的纵横比。图像的中间会拉伸以适应不同的大小

我在资产目录中设置了切片,如果我在
UIImageView
中使用图像,它将按预期工作

但是,如果我试图通过设置内容将图像与
CALayer
一起使用,它将不起作用。如果不使用切片,图像将按预期显示

我是这样设置的:

borderImageLayer = [CALayer layer];
borderImageLayer.contents = (id) _borderImage.CGImage;
borderImageLayer.frame = self.bounds;
[self.layer addSublayer:borderImageLayer];

所以,我的问题是,如何让
CALayer
处理切片图像?可能吗?

你说的是可拉伸图像,对吗?CALayer不支持可拉伸图像。你必须自己建造,这将是一个相当大的工作量。为什么呢?UIImage已经支持可拉伸图像。这是一个“已解决的问题”,就用它吧

编辑:
如果您真的需要使用层,那么我建议创建CALayer的自定义子类,该子类设置9个子层,安装图像分幅作为每个子层的内容,并通过调整分幅大小来响应调整大小。

是可拉伸图像。以及在自定义控件的层次结构中嵌入Calayer时使用Calayer。谢谢你的信息,我将建立一个9切片层。