iOS - 什么是“stretchableImageWithLeftCapWidth:0 topCapHeight:0”?

时间:2013-05-13 13:24:46

标签: ios uiimage image-resizing

什么是等值的  resizableImageWithCapInsets:的{​​{1}}?

此外,有没有简单的方法将值从stretchableImageWithLeftCapWidth:0 topCapHeight:0转换为stretchableImageWithLeftCapWidth

因为iOS 5中已弃用resizableImageWithCapInsets方法。

由于

2 个答案:

答案 0 :(得分:0)

我想你在寻找resizableImageWithCapInsets:UIEdgeInsetsZero?

答案 1 :(得分:0)

使用:

stretchableImageWithLeftCapWidth:0 topCapHeight:0

您告诉iOS 您希望整个图像可以垂直拉伸 您希望整个图像也可以水平拉伸 (直接从Apple文档复制的itals)。换句话说,图像的任何部分都不会被保留下来。

在转换代码以使用iOS 5中引入的新方法时,您必须记住新方法在确定如何调整未包含的图像大小时与旧方法的工作方式不同在大写(因此在方法名称本身中不使用“拉伸”)。

虽然旧方法使用纯(并非总是有效)缩放整个大写字母中未包含的每个像素,但新方法默认采用更有效的平铺方法。因此,如果您正在拉伸的图像部分(未包含在大写字母中的部分)在方向上测量多个像素,则新旧方法之间的结果将非常不同 s)被拉伸并且不均匀

虽然您没有提供您正在使用的实际图像的屏幕截图或您获得的结果,但这使您无法确切地告诉您为什么没有获得您想要的结果,它听起来像您具体希望使用UIImageResizingModeStretch调整大小模式(而不是默认的平铺模式)调整图像大小。如果是这样,您可能应该使用此方法:

resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:

第二个问题的答案还取决于您希望图像的可伸缩部分如何伸展。

启发式:

  • 如果你的旧帽子非零并且被拉伸的部分是1x1像素或者在拉伸方向上至少是均匀的,你可能可以使用UIEdgeInsetsMake(*top*, *left*, *bottom*, *right*)您的LeftCap值为left和right,TopCap值为top和bottom,假设旧方法假设您想要对称地拉伸图像。

  • 如果您的旧大写字母为0或被拉伸的部分在调整大小和不均匀的任何方向上大于1x1像素,您仍然可以以相同的方式转换大写字母但你想要的使用允许您控制resizingMode的方法变体。