0

resizableImageWithCapInsets:for的相等值是 stretchableImageWithLeftCapWidth:0 topCapHeight:0多少?

另外,是否有任何简单的方法可以将值从 转换stretchableImageWithLeftCapWidthresizableImageWithCapInsets

因为该stretchableImageWithLeftCapWidth方法在 iOS 5 中已被弃用。

谢谢

4

2 回答 2

0

我猜您正在寻找 resizableImageWithCapInsets:UIEdgeInsetsZero?

于 2013-05-13T13:27:24.833 回答
0

通过使用:

stretchableImageWithLeftCapWidth:0 topCapHeight:0

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

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

虽然旧方法对不包含在整体中的每个像素进行纯粹的(并不总是有效的)缩放,但新方法默认使用更有效的平铺方法。因此,如果您正在拉伸的图像部分(未包含在大写字母的部分)在被拉伸的方向上测量的像素超过一个像素并且不是“ t 统一

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

resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:

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

启发式:

  • 如果您的旧大写字母非零并且被拉伸的部分是 1x1 像素或至少在拉伸方向上是一致的,那么您可能可以使用UIEdgeInsetsMake(*top*, *left*, *bottom*, *right*)LeftCap 值作为左右以及 TopCap 值作为顶部和底部,假设旧方法假设您想要对称地拉伸图像。

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

于 2015-09-16T01:27:24.197 回答