resizableImageWithCapInsets:
for的相等值是
stretchableImageWithLeftCapWidth:0 topCapHeight:0
多少?
另外,是否有任何简单的方法可以将值从 转换stretchableImageWithLeftCapWidth
为resizableImageWithCapInsets
?
因为该stretchableImageWithLeftCapWidth
方法在 iOS 5 中已被弃用。
谢谢
resizableImageWithCapInsets:
for的相等值是
stretchableImageWithLeftCapWidth:0 topCapHeight:0
多少?
另外,是否有任何简单的方法可以将值从 转换stretchableImageWithLeftCapWidth
为resizableImageWithCapInsets
?
因为该stretchableImageWithLeftCapWidth
方法在 iOS 5 中已被弃用。
谢谢
我猜您正在寻找 resizableImageWithCapInsets:UIEdgeInsetsZero?
通过使用:
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 像素,您仍然可以以相同的方式转换大写,但您希望使用方法变体允许您控制调整大小模式。