gpt4 book ai didi

iphone - 为什么 UIImage 不能正确拉伸(stretch)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:12:38 25 4
gpt4 key购买 nike

我正在尝试使用以下代码拉伸(stretch) UIImage:

UIImage *stretchyImage = [[UIImage imageNamed:@"Tag@2x.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
UIImageView *newTag = [[UIImageView alloc] initWithImage:stretchyImage];

拉伸(stretch)前的图像是这样的:

enter image description here

之后,看起来像这样:

enter image description here

为什么拉伸(stretch)没有正常工作?角落都像素化了,看起来被拉伸(stretch)了,而实际上只有中间应该被拉伸(stretch)。仅供引用:我在 iOS 6 上运行此应用。

最佳答案

您的实现不起作用的原因是您为 stretchableImageWithLeftCapWidth:topCapHeight: 方法提供的值

首先,stretchableImageWithLeftCapWidth:topCapHeight: 在 iOS 6 中被弃用了。新的 API 是 resizableImageWithCapInsets:

图像的顶部、底部和右侧有不可拉伸(stretch)的部分。您告诉 API 的是“从左侧获取 -10,根据我给您的尺寸拉伸(stretch)其余部分”。

由于您在右侧有一个不可重复的自定义形状,无论是高度还是宽度,我们都应该将其视为一个整体。

所以顶帽宽度应该是图像的高度(以保持右侧事物的形状),左帽宽度应该是~20像素(圆角矩形角),底帽可以是0,因为顶帽是整个图像的高度,最后右帽应该是右侧自定义橙色形状的宽度(我认为是 ~40 像素)。

您可以使用上限值并获得更好的结果。

UIImage *image = [UIImage imageNamed:@"Tag"];
UIImage *resizableImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(image.size.height, 20, 0, 40)];

应该可以解决问题。此外,当您去掉文件扩展名和@2x 时,-imageNamed 工作正常。

关于iphone - 为什么 UIImage 不能正确拉伸(stretch)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13848215/

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