resizableImageWithCapInsets:resizingMode:崩溃在iOS 5.

2019-09-22 10:07发布

我使用此代码正确拉伸图片,但是在iOS 5.1崩溃。 如果我从末尾删除resizingMode,它的工作原理,但图像是那么的瓷砖和看起来很滑稽。 任何想法,为什么它的崩溃?

谢谢

self.scrollViewImage.image = [[UIImage imageNamed:@"SysInfoBackBox"] resizableImageWithCapInsets:UIEdgeInsetsMake(40, 40, 40, 40) resizingMode:UIImageResizingModeStretch];

Answer 1:

这是一个在iOS版6.0中引入和不支持在以前的版本中的新方法。 如果你想在以前的版本中运行的代码,你将不得不在运行时检查是否UIImage的实例给选择该方法,如果没有实现替代响应。

if ([UIImage instancesRespondToSelector:@selector(resizableImageWithCapInsets:resizingMode:)]) {
    self.scrollViewImage.image = [[UIImage imageNamed:@"SysInfoBackBox"] resizableImageWithCapInsets:UIEdgeInsetsMake(40, 40, 40, 40) resizingMode:UIImageResizingModeStretch];
} else {
    // alternative
}


Answer 2:

此功能resizableImageWithCapInsets:resizingMode:不要在iOS 5.0(只> = 6.0)工作,但resizableImageWithCapInsets:不,尝试使用它。 也许一个简单的更换可以帮助你。



Answer 3:

我要重播应该与您问题相关的另一个问题https://stackoverflow.com/a/14623534/2028575

但如果你喜欢我可以把这里的萨雷答案:

这是发生仅与iOS5.x调整是diplay以这种方式创建的UIImage的UIImageView的设备:

    UIEdgeInsets edgeInsets = UIEdgeInsetsMake(topCapHeight, leftCapWidth, topCapHeight, leftCapWidth);
    image = [originalImage resizableImageWithCapInsets:edgeInsets];

这可能是一个iOS的bug,它已被固定在iOS6.x

如果你的情况是一面镜子标准调整图像大小,你可以用这种方式:

创建的UIImage的类别,并添加此实例方法:

- (UIImage*)resizableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight </b>
{
    UIImage *image = nil;    
    float osVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
    if (osVersion < 6.0) {
        image = [self stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight];
    } else {
        UIEdgeInsets edgeInsets = UIEdgeInsetsMake(topCapHeight, leftCapWidth, topCapHeight, leftCapWidth);
        image = [self resizableImageWithCapInsets:edgeInsets];
    }
    return image;
}

该方法: - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight

iOS的文件中,但不是在框架已被弃用,这意味着你可以使用它时,你用的设备与iOS 6或更高版本上运行的设备丝毫iOS5.x您的应用程序没有任何问题,和用户的新支持的方法。



文章来源: resizableImageWithCapInsets:resizingMode: crashing on iOS 5.1