我使用此代码正确拉伸图片,但是在iOS 5.1崩溃。 如果我从末尾删除resizingMode,它的工作原理,但图像是那么的瓷砖和看起来很滑稽。 任何想法,为什么它的崩溃?
谢谢
self.scrollViewImage.image = [[UIImage imageNamed:@"SysInfoBackBox"] resizableImageWithCapInsets:UIEdgeInsetsMake(40, 40, 40, 40) resizingMode:UIImageResizingModeStretch];
这是一个在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
}
此功能resizableImageWithCapInsets:resizingMode:
不要在iOS 5.0(只> = 6.0)工作,但resizableImageWithCapInsets:
不,尝试使用它。 也许一个简单的更换可以帮助你。
我要重播应该与您问题相关的另一个问题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您的应用程序没有任何问题,和用户的新支持的方法。