设置UISlider的ThumbImage,图片非常模糊, 使用代码生成图片就OK了

设置UISlider的ThumbImage,图片非常模糊, 使用代码生成图片就OK了

这样设置图片非常模糊:

[self.slider setThumbImage:[UIImage imageNamed:@"playDot"] forState:UIControlStateNormal];

 有锯齿:

  

正确的姿势:

UIImage *img = [OralTrainingHelper p_createImageWithColor:UIColorHex(#846FFD) andSize:CGSizeMake(16, 16)];
UIImage * resImg = [OralTrainingHelper p_generateCornerRadiusImage:img cornerRadius:8];
[self.slider setThumbImage:resImg forState:UIControlStateNormal];

效果如下:

两个工具类方法:

复制代码
/// 纯色转图片
/// @param color 颜色
/// @param size 图片尺寸
+ (UIImage *)p_createImageWithColor:(UIColor *)color andSize:(CGSize)size {
    CGRect rect = CGRectMake(0.0, 0.0, size.width, size.height);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return resultImage;
}

/// UIImage加圆角
/// @param image 图片
/// @param cornerRadius 圆角
+ (UIImage *)p_generateCornerRadiusImage:(UIImage *)original cornerRadius:(CGFloat)cornerRadius {
    UIGraphicsBeginImageContextWithOptions(original.size, NO, 0.0);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGRect rect = CGRectMake(0.0, 0.0, original.size.width, original.size.height);
    CGContextAddPath(ctx, [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:cornerRadius].CGPath);
    CGContextClip(ctx);
    [original drawInRect:rect];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}
复制代码

 18年被这个问题困扰了好久,终于解决了

posted on   土匪7  阅读(408)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2020-02-28 科大讯飞语音评测卡死,卡这里两天
2016-02-28 hdf第一周完了,突然时间静止.,醒了就早点去公司上班,再努力一点
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示