UISlider 上的 resizableImageWithCapInsets 在 iOS 6 及更高版本中失真
Posted
技术标签:
【中文标题】UISlider 上的 resizableImageWithCapInsets 在 iOS 6 及更高版本中失真【英文标题】:resizableImageWithCapInsets on UISlider gets distorted in iOS 6 and up 【发布时间】:2013-08-12 17:09:30 【问题描述】:我有一个UISlider
,我想将自定义创建的UIImage
放在上面以进行拉伸。我是这样创建的:
UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width * difference, image.size.height)];
iv.backgroundColor = [BSFunctions getColorFromHex:@"f7f8fa"];
iv.image = cappedImage;
[self addSubview:iv];
UIGraphicsBeginImageContextWithOptions (iv.frame.size, YES, [[UIScreen mainScreen] scale]);
[iv.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[iv removeFromSuperview];
return img;
我可以确认图像创建正确,看起来像这样:
但是,当我将它放到滑块上并且图像开始拉伸时,它看起来像这样:
我将它添加到滑块的方式如下:
UIImage *newImage = [self imageStretchedOnLeft];
UIImage *rightStretchImage = [newImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, newImage.size.width - 2, 0, 0)];
[self setMinimumTrackImage:rightStretchImage forState:UIControlStateNormal];
它曾经在几个版本前工作过,当它突然停止工作时,我什么都没碰。更令人惊讶的是,UISlider
在 ios 5.1 模拟器上的工作方式与它在 iOS 5 上的工作方式一样!这整件事让我发疯,我什至不知道如何处理它。任何帮助将不胜感激。
我正在为 iOS 5 及更高版本创建一个应用程序并在 iOS 6 上对其进行测试
【问题讨论】:
【参考方案1】:这样解决问题:
if (iosVersion < 6.0)
rightStretchImage = [newImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, newImage.size.width - 2, 0, 0)];
else
rightStretchImage = [newImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, newImage.size.width - 2, 0, 0) resizingMode:UIImageResizingModeStretch];
【讨论】:
以上是关于UISlider 上的 resizableImageWithCapInsets 在 iOS 6 及更高版本中失真的主要内容,如果未能解决你的问题,请参考以下文章
UISlider 上的 resizableImageWithCapInsets 在 iOS 6 及更高版本中失真
自定义 tableviewcell 上的 UISlider 和 UILabel 在第二次播放音频之前不会使用 avaudioplayer 更新