如何在 CALayer 中使用切片图像
How to use sliced images with CALayer
我将图像存储在资产目录中并设置为进行切片(根据我的背景,我称之为 9 切片)。如果您以不同尺寸绘制图像,这允许您使用带有圆角或异形角的图像来保持角的纵横比。图像的中间被拉伸以适应不同的尺寸。
我在资产目录中设置了切片,如果我在 UIImageView
中使用图像,它会按预期工作。
但是,如果我尝试通过设置内容来使用带有 CALayer
的图像,则它不起作用。如果您没有使用切片,图像将按您预期的方式显示。
我是这样设置的:
borderImageLayer = [CALayer layer];
borderImageLayer.contents = (id) _borderImage.CGImage;
borderImageLayer.frame = self.bounds;
[self.layer addSublayer:borderImageLayer];
所以,我的问题是,如何让 CALayer
处理切片图像?可能吗?
你说的是可伸缩图像,对吗? CALayer 不支持可伸缩图像。您必须自己构建它,这将是一项相当大的工作量。为什么呢? UIImage 已经支持可拉伸图像。这是一个“已解决的问题”。就用那个。
编辑:
如果您真的需要使用层,那么我建议创建一个 CALayer 的自定义子类,它设置 9 个子层,将图像图块安装为每个子层的内容,并通过调整图块大小来响应调整大小。
我将图像存储在资产目录中并设置为进行切片(根据我的背景,我称之为 9 切片)。如果您以不同尺寸绘制图像,这允许您使用带有圆角或异形角的图像来保持角的纵横比。图像的中间被拉伸以适应不同的尺寸。
我在资产目录中设置了切片,如果我在 UIImageView
中使用图像,它会按预期工作。
但是,如果我尝试通过设置内容来使用带有 CALayer
的图像,则它不起作用。如果您没有使用切片,图像将按您预期的方式显示。
我是这样设置的:
borderImageLayer = [CALayer layer];
borderImageLayer.contents = (id) _borderImage.CGImage;
borderImageLayer.frame = self.bounds;
[self.layer addSublayer:borderImageLayer];
所以,我的问题是,如何让 CALayer
处理切片图像?可能吗?
你说的是可伸缩图像,对吗? CALayer 不支持可伸缩图像。您必须自己构建它,这将是一项相当大的工作量。为什么呢? UIImage 已经支持可拉伸图像。这是一个“已解决的问题”。就用那个。
编辑:
如果您真的需要使用层,那么我建议创建一个 CALayer 的自定义子类,它设置 9 个子层,将图像图块安装为每个子层的内容,并通过调整图块大小来响应调整大小。