gpt4 book ai didi

ios - 如何在 CALayer.contents 中添加 Stretchable UIImage?

转载 作者:IT王子 更新时间:2023-10-29 08:03:10 28 4
gpt4 key购买 nike

我有一个 CALayer,我想给它添加一个可拉伸(stretch)的图像。如果我这样做:

        _layer.contents = (id)[[UIImage imageNamed:@"grayTrim.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 15.0, 0.0, 15.0)].CGImage;

它不会工作,因为层的默认 contentGravity 是 kCAGravityResize。

我读到这可以使用 contentsCenter 来完成,但我似乎无法弄清楚我将如何使用它来在我的 CALayer 中实现拉伸(stretch)图像。

欢迎任何想法!

霍拉修

最佳答案

这个问题的答案是这个。假设您有一个可拉伸(stretch)图像,它仅在宽度上拉伸(stretch)并且高度固定(为简单起见)。

图像宽度为 31px(15px 固定尺寸 - 不拉伸(stretch) - 1px 会被拉伸(stretch))

假设您的图层是 CALayer 的子类,您的初始化方法应该如下所示:

    - (id)init
{
self = [super init];
if (self) {
UIImage *stretchableImage = (id)[UIImage imageNamed:@"stretchableImage.png"];
self.contents = (id)stretchableImage.CGImage;

self.contentsScale = [UIScreen mainScreen].scale; //<-needed for the retina display, otherwise our image will not be scaled properly

self.contentsCenter = CGRectMake(15.0/stretchableImage.size.width,0.0/stretchableImage.size.height,1.0/stretchableImage.size.width,0.0/stretchableImage.size.height);
}
return self;
}

根据文档,contentsCenter 矩形的值必须介于 0-1 之间。

Defaults to the unit rectangle (0.0,0.0) (1.0,1.0) resulting in the entire image being scaled. If the rectangle extends outside the unit rectangle the result is undefined.

就是这样。希望其他人会发现这很有用,并且会节省一些开发时间。

关于ios - 如何在 CALayer.contents 中添加 Stretchable UIImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11748224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com