Swift - 滑块(UISlider)的用法
作者:hangge | 2015-01-16 15:50
(本文代码已升级至Swift4)
1,滑块的创建
2,设置滑块的值,同时有动画
3,滑块值改变响应
4,滑块左右两边槽的颜色
5,滑块后面槽线两侧添加图标
6,自定义滑块组件图片
1,滑块的创建
let slider = UISlider(frame:CGRect(x:0, y:0, width:300, height:50)) slider.center = self.view.center slider.minimumValue = 0 //最小值 slider.maximumValue = 1 //最大值 slider.value = 0.5 //当前默认值 self.view.addSubview(slider)
slider.setValue(0.8,animated:true)
slider.isContinuous = false //滑块滑动停止后才触发ValueChanged事件 slider.addTarget(self,action:#selector(sliderDidchange(_:)), for:UIControlEvents.valueChanged) @objc func sliderDidchange(_ slider:UISlider){ print(slider.value) }
slider.minimumTrackTintColor = UIColor.red //左边槽的颜色 slider.maximumTrackTintColor = UIColor.green //右边槽的颜色
slider.minimumValueImage = UIImage(named:"voice+") //左边图标 slider.maximumValueImage = UIImage(named:"voice-") //右边图标
//设置滑块右边部分的图片 slider.setMaximumTrackImage(UIImage(named:"slider_max"),for: .normal) //设置滑块左边部分的图片 slider.setMinimumTrackImage(UIImage(named:"slider_min"),for: .normal) //设置滑块的图片 slider.setThumbImage(UIImage(named:"slider_thumb"),for: .normal)
//设置滑块右边部分的图片-使用三宫格缩放(左右14像素不变,中间缩放) let imgTrackRight = UIImage(named:"slider_max") let imgRight = imgTrackRight!.stretchableImage(withLeftCapWidth: 14, topCapHeight:0) slider.setMaximumTrackImage(imgRight, for: .normal)
全部评论(3)
let slider=UISlider(frame:CGRectMake(0,0,300,50)) 创建的时候会提示 ‘CGRectMake’ is unavailable in Swift 是我打开方式不对吗?新手请航哥指点迷津
站长回复:这篇文章写的比较早,现在Swift语法有了很大的变化所以会报错。我现已把文章代码更新了,你可以再看下。(如果还有发现那篇文章的代码有问题,可以给我留言,我都会修改的。)
航哥,这上边的图片在哪里啊?自己去网上照图片半天找不到,或者贴个效果图看看也行哇!
站长回复:哪个图片?最上面有个效果图啊。下面自定义图片的话,你自己随便找个图标运行下就可以看到效果了。
航哥 问个问题 就是像下面这样的代码 对于slider来说我能不能添加两个UIControlEvents,因为我想实现 在valuechange的时候 能看到数值但是不想进行网咯请求数据 只想它停下来的时候请求最后的那个value的数据
rightslider.addTarget(self, action: "handleEventchangeValue:", forControlEvents: .ValueChanged)
rightslider.addTarget(self, action: "handleEventchange:", forControlEvents:UIControlEvents.TouchUpInside)
站长回复:当然可以这样做,你这个方法很好。