UISlider 多种方式改变滑竿颜色

1. UIColor改变

sli.thumbTintColor = UIColor.whiteColor;
sli.thumbTintColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];

2. 图片改变

/// 纯色转图片
/// @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;
}



                UISlider* sli = (UISlider *)sub;
                UIImage* img = [UIImage imageNamed:@"white_100"];
                // 图片截取
                CGImageRef cgImage = CGImageCreateWithImageInRect(img.CGImage,CGRectMake(0, 0, 24, 24));
                img = [UIImage imageWithCGImage:cgImage];
                UIImage * resImg = [self p_generateCornerRadiusImage:img cornerRadius:12];
                [sli setThumbImage:resImg forState:UIControlStateNormal];
                

3. 改变UISlider的外观

slider.minimumValueImage = [UIImage imageNamed:@"设置slider左边的图片"];
slider.maximumValueImage = [UIImage imageNamed:@"设置slider右边的图片"];

//设置了会减小滚动区域的宽度,但整个slider的宽度不变
[slider setMinimumTrackImage:[UIImage imageNamed:@"设置滑轮左边的图片,最好宽度和slider一样"] forState:UIControlStateNormal];
[slider currentMinimumTrackImage]; //得到当前滑轮左边的图片如果有的话

[slider setMaximumTrackImage:[UIImage imageNamed:@"设置滑轮左边的图片,最好宽度和slider一样"] forState:UIControlStateNormal];
[slider currentMaximumTrackImage]; //得到当前滑轮右边的图片如果有的话

把蓝色的设置为MinimumTrackImage
把灰色的设置为MaximumTrackImage
可以加一个label用于显示value,在UISlider的行为的change方法里改变label.text属性
slider.minimumTrackTintColor = [UIColor redColor]; //滑轮左边颜色如果设置了左边的图片就不会显示
slider.maximumTrackTintColor = [UIColor redColor]; //滑轮右边颜色如果设置了右边的图片就不会显示

[slider thumbImageForState:UIControlStateNormal];  
[slider setThumbImage:[UIImage imageNamed:@"设置滑轮样子的图片"] forState:UIControlStateHighlighted];//设置了普通状态和高亮状态的滑轮样式
slider.thumbTintColor = [UIColor redColor];//设置了滑轮的颜色如果设置了滑轮的样式图片就不会显示

你可以根据滑块的各种不同状态显示不同的图像。下面是可用状态:
UIControlStateNormal
UIControlStateHighlighted
UIControlStateDisabled
UIControlStateDisabled
UIControlStateSelected

4. iOS 图片资源放在 Images.xcassets 和单独文件夹的区别,通过 imageNamed 和imageWithContentsOfFile 加载的区别

一、iOS 图片资源放在 Images.xcassets 和单独文件夹的区别
Images.xcassets(直接拖动到assets目录即可)
(1)图片的资源包放到 Images.xcassets 中,会把所有的文件打包 Assets.car文件,图片会被压缩,从而使包的体积变小。
(2)只支持png格式的图片
(3)图片只支持 [UIImage imageNamed:@“logo01”] 的方式实例化
imageView.image = [UIImage imageNamed:@“logo01”];
单独文件夹
(1)图片的资源包放到文件夹中,会被打包 MainBundle 中。图片不会被压缩。
(2)可以使用 [UIImage imageNamed:@“logo01”] 加载,也可以使用i mageWithContentOfFile: 方法加载。

// imageView.image = [UIImage imageNamed:@“logo01”];
NSString *path = [[NSBundle mainBundle] pathForResource:@“logo01.png” ofType:nil];
imageView.image = [UIImage imageWithContentsOfFile:path];

二、通过 imageNamed 和imageWithContentsOfFile 加载图片的区别
imageNamed
(1)加载到内存当中会一直存在内存当中,(图片)不会随着对象的销毁而销毁。
(2)相同的图片是不会重复加载内存中
(3)加载到内存中占据的内存较大

imageWithContentsOfFile
(1)加载的图片会随着对象的销毁而销毁
(2)相同的图片是会重复加载到内存中
(3)加载到内存中占据的内存较大

三、总结
​ 放在 Images.xcassets 里边的图片打包时,会被压缩成.car文件,APP的体积变小。但是不能通过路径方式加载图片,只能使用 [UIIimage imageName:]
​ 而imageName:这个方法加载图片,会在内存中一直存在,什么时候销毁不受管理员控制,因此适用于加载频繁的小图片
​ 而放在文件夹的图片,可以使用imageWithContentOfFile:方法加载,该方法的好处是内存随着对象的销毁而销毁,因此适用于大图片、频率低的图片

引用

  • https://www.jianshu.com/p/4fdcd758e3dc
  • http://www.manongjc.com/article/68443.html
  • https://www.cnblogs.com/tufei7/p/15944842.html
  • http://t.zoukankan.com/yulang314-p-3550359.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值