使用:
stretchableImageWithLeftCapWidth:0 topCapHeight:0
你告诉你希望整个图像可上下伸缩和你想整个图像也被水平伸展的那的iOS(itals直接复制来自Apple文档)。换句话说,图像的任何部分都不会被保留下来。
但是,在将代码转换为使用iOS 5中引入的新方法时,您必须记住新方法与旧方法的工作方式不同,因为它确定如何调整未包含在图像中的图像帽子(因此在方法名称本身中使用“拉伸”)。
尽管旧方法使用纯粹(并非总是有效)的缩放大小中未包含的每个像素作为整体,但新方法默认使用更高效的平铺方法。因此,新旧方法之间的结果将会非常不同如果您正在拉伸的图像部分(未包含在大写字母中的部分)会在拉伸的方向上测量多个像素并不统一。
虽然你还没有提供你正在使用的实际图像或你得到的结果的截图,这使得你无法准确地告诉你为什么你没有得到你想要的结果,它听起来像你特别希望您的图像可以用调整模式(而不是默认的平铺模式)调整大小。如果是的话,很可能是你应该使用这种方法来代替:
resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:
回答你的第二个问题也取决于你希望你的形象的伸展部延伸。
启发式:
如果你的旧帽子是非零和被拉伸的部分要么是1x1像素或至少均匀拉伸方向(S),你可能能够使用UIEdgeInsetsMake(*top*, *left*, *bottom*, *right*)
,将LeftCap值设置为左和右,并将TopCap值设置为顶部和底部,因为旧方法假定您想要对称地拉伸图像。
如果您的旧大写字母为0或被拉伸的部分在调整大小和不均匀的任何方向上都大于1x1像素,那么仍然可以用相同的方式转换大写字母,但是您希望使用允许您控制resizingMode的方法变体。
号。resizableImageWithCapInsets:UIEdgeInsetsZero不会产生相同的结果,其中stretchableImageWithLeftCapWidth:0 topCapHeight:0给了.. – Confused 2013-05-13 13:51:57