Swift基础(十九)UISlider

来源:互联网 发布:网络歌曲人生路视频 编辑:程序博客网 时间:2024/05/16 16:12
class RootViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        self.view.backgroundColor = UIColor.whiteColor()
        
        // 创建
        let slider: UISlider = UISlider(frame: CGRectMake(20, 100, 200, 60))
        // 添加到视图上
        self.view.addSubview(slider)
        self.createSubViews(slider)
    }
    
    private func createSubViews(slider: UISlider) {
        // 设置最小值
        slider.minimumValue = 10
        // 设置最大值
        slider.maximumValue = 80
        // 设置默认值
        slider.value = 30
        // 设置左端图片
        slider.setMinimumTrackImage(UIImage(named: "minimumTrackImage"), forState: .Normal)
        // 设置右端图片
        slider.setMaximumTrackImage(UIImage(named: "maximumTrackImage"), forState: .Normal)
        // 读取当前滑块控件的值
        let value = slider.value
        print(value)
        // 要想在滑块改变时收到通知,可以使用addTarget添加动作
        slider.addTarget(self, action: #selector(RootViewController.sliderValueChange(_:)), forControlEvents: .ValueChanged)
        // 在拖动时,发现上面的方法一直在触发。如果想要滑块停止拖动SliderValueVhange:方法,那么我们可以设置滑块的continuous属性为false,默认为true
        slider.continuous = false
        
        // 自定义滑块控件
        // 定义左右图
        let stetchLeftTrack: UIImage! = UIImage(named: "maximumTrackImage")
        let stetchRightTrack: UIImage! = UIImage(named: "minimumTrackImage")
        // 定义滑块图片
        let thumbImage: UIImage! = UIImage(named: "thumbImage")
        // 创建UISlider对象
        let newSlider: UISlider = UISlider(frame: CGRectMake(30, 300, 257, 8))
        newSlider.backgroundColor = UIColor.clearColor()
        // 设置最大值及最小值
        newSlider.minimumValue = 0.5
        newSlider.maximumValue = 1.5
        newSlider.value = 1.0 // 设置默认值
        // 设置左右图片
        newSlider.setMinimumTrackImage(stetchLeftTrack, forState: .Normal)
        newSlider.setMaximumTrackImage(stetchRightTrack, forState: .Normal)
        // 设置拖动圆点的图片,注意这里要加UIControlState.Highlighted的状态,否则当拖动滑块是滑块将变成原生的控件
        newSlider.setThumbImage(thumbImage, forState: .Normal)
        newSlider.setThumbImage(thumbImage, forState: .Highlighted)
        // 添加通知,获取值改变
        newSlider.addTarget(self, action: #selector(RootViewController.newSliderValueChange(_:)), forControlEvents: .ValueChanged)
        // 滑块拖动后的事件
        newSlider.addTarget(self, action: #selector(RootViewController.newSlidertouchUpInside(_:)), forControlEvents: .TouchUpInside)
        self.view.addSubview(newSlider)
    }
    
    // 新方法拖动事件
    @objc private func newSliderValueChange(sender: AnyObject?) {
        let newSlider: UISlider = sender as! UISlider
        print(newSlider.value)
    }
    
    // 新方法拖动后事件
    @objc private func newSlidertouchUpInside(sender: AnyObject?) {
        let newSlider: UISlider = sender as! UISlider
        print(newSlider.value)
    }
    
    // 实现方法
    @objc private func sliderValueChange(sender: AnyObject?) {
        let newSlider: UISlider = sender as! UISlider
        let value = newSlider.value
        print(value)
    }
}
0 0