如何使用[UIImage resizableImageWithCapInsets:] [英] how to use [UIImage resizableImageWithCapInsets:]

查看:206
本文介绍了如何使用[UIImage resizableImageWithCapInsets:]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想拉伸尺寸为170x50的图像并将其显示在尺寸为240x140的图像视图中。
原始图片如下所示:

I'd like to stretch a image with size 170x50 and show it in an image view with size 240x140. The original image looks like:

我想保留四个角,只拉伸中心部分。我使用以下代码:

I want to keep the four corners and only stretch the center part. I use the following code:


    UIImage *originalImg = [UIImage imageNamed:@"ImageNamed"];
    UIImage *resizeImg = [originalImg resizableImageWithCapInsets:UIEdgeInsetsMake(20 ,10, 10, 10)];
    self.originalImgV.image = originalImg;
    self.resizedImgV.image = resizeImg;

originalImgV和resizedImgV都设置为aspect fill。我在模拟器上运行它,结果是:

Both originalImgV and resizedImgV are set to "aspect fill". I run it on the simulater, and the result is :

我无法理解的是:resizedImgV有2个箭头!
可以任何人告诉我为什么以及如何正确使用它?
谢谢

What I can't understand is: the resizedImgV has 2 arrows! Could any one tell me why and how can I use it correctly? Thanks

推荐答案

您的问题在于传递给 UIEdgeInsetsMake 。值为top,left,bottom,right。由于左上角的箭头,您需要确保左边的值足够大,可以从图像的左边缘到箭头的右边。

Your issue is with the values you pass to UIEdgeInsetsMake. The values are top, left, bottom, right. Due to the arrow in the top left, you need to make sure your left value is big enough to go from the left edge of the image to just to the right of the arrow.

根据您发布的图片,您需要以下内容:

Given the image you posted, you want something like:

 UIEdgeInsetsMake(12, 32, 4, 4)

BTW - 图像应仅左+右+ 1像素宽,上+下+ 1像素高。因此,您的图像不需要像现在这么大。

BTW - the image should only be left + right + 1 pixels wide and top + bottom + 1 pixels tall. So your image doesn't need to be nearly as big as it is.

这篇关于如何使用[UIImage resizableImageWithCapInsets:]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆