【问题标题】:resizableImageWithCapInsets on UISlider gets distorted in iOS 6 and upUISlider 上的 resizableImageWithCapInsets 在 iOS 6 及更高版本中失真
【发布时间】: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 上对其进行测试

【问题讨论】:

    标签: ios cocoa-touch uiimage uikit uislider


    【解决方案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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      • 2014-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 2016-09-13
      相关资源
      最近更新 更多