0

我有一个 1024 x 1 像素的 UIImage。此图像必须拉伸以填充 1024 x 50 像素的 UIImageView。

该图像最初加载在 NSArray 上,然后我这样做:

 UIImage *image = nil;

    if ([UIImage respondsToSelector:@selector(resizableImageWithCapInsets:resizingMode:)]) { // ios >= 6.0
        image = [[myImages objectAtIndex:0] resizableImageWithCapInsets:UIEdgeInsetsZero
resizingMode:UIImageResizingModeStretch];
    } else {
        image = [[myImages objectAtIndex:0] stretchableImageWithLeftCapWidth:0.0f topCapHeight:0.0f];
    }

这在 iOS 6 上很好用,但在 iOS 5 上不行。为什么?

我的意思是,图像在 iOS 6 上很好地伸展并填充了 UIImageView,但在 5 上却没有。

UIImageView 使用以下参数设置:

UIImageView myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,1024,50)];
[myImageView setContentMode:UIViewContentModeScaleToFill | UIViewContentModeRedraw];
[myImageView setImage:image];
4

2 回答 2

0
[[myImages objectAtIndex:0] stretchableImageWithLeftCapWidth:0.0f topCapHeight:0.0f]]

这是 iOS 5 中不推荐使用的方法。请通过这个

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImage_Class/DeprecationAppendix/AppendixADeprecatedAPI.html

它可能会帮助你。

于 2013-05-04T17:04:10.357 回答
0

使用resizableImageWithCapInsets:良好的边缘插入值而不是您的UIEdgeInsetsZero. 为此,请计算出视图的宽度和高度。然后:

image = [myView resizableImageWithCapInsets:UIEdgeInsetsMake(
             height/2.0-1, width/2.0-1, height/2.0-1, width/2.0-1];
于 2013-05-04T17:48:39.697 回答