1

我有一个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 上对其进行测试

4

1 回答 1

2

解决了这样的问题:

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];
}
于 2013-08-19T09:36:29.230 回答