iOS - UISlider

简介: 前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UISlider : UIControl @available(iOS 2.

前言

    NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UISlider : UIControl <NSCoding>
    @available(iOS 2.0, *)                         public class UISlider : UIControl, NSCoding

1、UISlider 的创建

  • Objective-C

        // 高度不起作用,但不能为 0 ,为 0 时滑块无法滑动
        UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(20, 200, 300, 20)];
    
        // 将 slider 添加到 view
        [self.view addSubview:slider];
  • Swift

        // 高度不起作用,但不能为 0 ,为 0 时滑块无法滑动
        let slider:UISlider = UISlider(frame: CGRectMake(20, 200, 300, 20))
    
        // 将 slider 添加到 view
        self.view.addSubview(slider)

2、UISlider 的设置

  • Objective-C

        // 设置最小和最大值
        slider.minimumValue = 0;
        slider.maximumValue = 100;
    
        // 设置当前值
        slider.value = 50;
        [slider setValue:50 animated:YES];
    
        // 获取当前值
        float value = slider.value;
    
        // 设置滑块的颜色
        /*
            默认为白色
        */
        slider.thumbTintColor = [UIColor orangeColor];
    
        // 设置滑过的进度条的颜色
        /*
            默认为蓝色
        */
        slider.tintColor = [UIColor redColor];
    
        // 设置滑过的和未划过的进度条的颜色
        /*
            minimumTrackTintColor:滑过的进度条颜色,默认为蓝色
            maximumTrackTintColor:未划过的进度条颜色,默认为灰色
        */
        slider.minimumTrackTintColor = [UIColor greenColor];
        slider.maximumTrackTintColor = [UIColor redColor];
    
        // 设置滑块的图片
        [slider setThumbImage:[UIImage imageNamed:@"hehe"] forState:UIControlStateNormal];
        [slider setThumbImage:[UIImage imageNamed:@"hihi"] forState:UIControlStateHighlighted];
    
        // 设置滑过的和未划过的进度条的图片
        [slider setMinimumTrackImage:[UIImage imageNamed:@"pic1"] forState:UIControlStateNormal];
        [slider setMaximumTrackImage:[UIImage imageNamed:@"pic2"] forState:UIControlStateNormal];
    
        // 设置左右两端的图片
        slider.minimumValueImage = [UIImage imageNamed:@"volum-"];
        slider.maximumValueImage = [UIImage imageNamed:@"volum+"];
    
        // 设置为纵向
    
            // 顺时针旋转 90 度,90/180 * M_PI,1 度 = PI/180 弧度
            slider.transform = CGAffineTransformMakeRotation(0.5 * M_PI);
    
            // 逆时针旋转 90 度,270/180 * M_PI,1 度 = PI/180 弧度
            slider.transform = CGAffineTransformMakeRotation(1.5 * M_PI);
    
        // 获取当前值
        UIImage *thumbImage = slider.currentThumbImage;                  // 获取当前滑块的图片值
        UIImage *minimumTrackImage = slider.currentMinimumTrackImage;    // 获取当前滑过的进度条的图片值
        UIImage *maximumTrackImage = slider.currentMaximumTrackImage;    // 获取当前未滑过的进度条的图片值
    
        // 添加点击触发事件
        /*
            UISlider 继承于 UIControl,可以对 UISlider 添加触发事件
        */
        [slider addTarget:self action:@selector(sliderClick:) forControlEvents:UIControlEventValueChanged];
  • Swift

        // 设置最小和最大值
        slider.minimumValue = 0
        slider.maximumValue = 100
    
        // 设置当前值
        slider.value = 50
        slider.setValue(50, animated: true)
    
        // 获取当前值
        let value:Float = slider.value
    
        // 设置滑块的颜色
        /*
            默认为白色
        */
        slider.thumbTintColor = UIColor.orangeColor()
    
        // 设置滑过的进度条的颜色
        /*
            默认为蓝色
        */
        slider.tintColor = UIColor.redColor()
    
        // 设置滑过的和未划过的进度条的颜色
        /*
            minimumTrackTintColor:滑过的进度条颜色,默认为蓝色
            maximumTrackTintColor:未划过的进度条颜色,默认为灰色
        */
        slider.minimumTrackTintColor = UIColor.greenColor()
        slider.maximumTrackTintColor = UIColor.redColor()
    
        // 设置滑块的背景图片
    
            // 按钮未点击时的图片
            slider.setThumbImage(UIImage(named: "hehe"), forState: UIControlState.Normal)
    
            // 按钮点击时的图片
            slider.setThumbImage(UIImage(named: "hihi"), forState: UIControlState.Highlighted)
    
        // 设置滑过的和未划过的进度条的图片
        slider.setMinimumTrackImage(UIImage(named: "pic1"), forState: UIControlState.Normal)
        slider.setMaximumTrackImage(UIImage(named: "pic2"), forState: UIControlState.Normal)
    
        // 设置左右两边的图片
        slider.minimumValueImage = UIImage(named: "volum-")
        slider.maximumValueImage = UIImage(named: "volum+")
    
        // 设置为纵向
    
            // 顺时针旋转 90 度,90/180 * M_PI,1 度 = PI/180 弧度
            slider.transform = CGAffineTransformMakeRotation(0.5 * CGFloat(M_PI))
    
            // 逆时针旋转 90 度,270/180 * M_PI,1 度 = PI/180 弧度
            slider.transform = CGAffineTransformMakeRotation(1.5 * CGFloat(M_PI))
    
        // 获取当前值
        let thumbImage:UIImage? = slider.currentThumbImage                 // 获取当前滑块的图片值
        let minimumTrackImage:UIImage? = slider.currentMinimumTrackImage   // 获取当前滑过的进度条的图片值
        let maximumTrackImage:UIImage? = slider.currentMaximumTrackImage   // 获取当前未滑过的进度条的图片值
    
        // 添加点击触发事件
        slider.addTarget(self, action: #selector(UiSlider.sliderClick(_:)), 
                     forControlEvents: .ValueChanged)

3、UISlider 透明化处理

  • 经过处理后的 UISlider 就只能看到中间的 ThumbImage 了,而 ThumbImage 左右的颜色都变成透明的。之后可以再设置上颜色等。

  • Objective-C

        UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, 1), NO, 0.0f);
        UIImage *transparentImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    
        [slider setMinimumTrackImage:transparentImage forState:UIControlStateNormal];
        [slider setMaximumTrackImage:transparentImage forState:UIControlStateNormal];
  • Swift

        UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, 1), false, 0.0)
        let transparentImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
    
        slider.setMinimumTrackImage(transparentImage, forState: .Normal)
        slider.setMaximumTrackImage(transparentImage, forState: .Normal)

4、Storyboard 中设置

  • 在 Storyboard 场景中设置

    • Slider 设置

      Slider1

      Value 最小值/最大值/当前值
      Min Image 最小值图片
      Max Image 最大值图片
      Min Track Tint 滑过的颜色
      Max Track Tint 未滑过的颜色
      Thumb Tint 滑块颜色
      Events
      -- Continuous Updates
    • Control 设置

      Slider2

      Alignment 文字对齐方式
      Content
      -- Selected 选中
      -- Enable 可用
      -- Highlighted 高亮
目录
相关文章
|
API iOS开发 Perl
iOS UISlider自定义渐变色滑杆
iOS UISlider自定义渐变色滑杆
iOS UISlider自定义渐变色滑杆
|
iOS开发
iOS UISlider用法总结
iOS UISlider用法总结
257 0
|
iOS开发 Swift
iOS开发技巧 - 使用UISlider来调整值的范围
(Swift) import UIKit class ViewController: UIViewController { var slider: UISlider! func sliderValueChanged(slider: UISlider) { println("Slider's new value is \(slider.
1100 0
|
6天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
1月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
114 1
|
13天前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
35 9
|
9天前
|
设计模式 Swift iOS开发
探索iOS开发:从基础到高级,打造你的第一款App
【10月更文挑战第40天】在这个数字时代,掌握移动应用开发已成为许多技术爱好者的梦想。本文将带你走进iOS开发的世界,从最基础的概念出发,逐步深入到高级功能实现,最终指导你完成自己的第一款App。无论你是编程新手还是有志于扩展技能的开发者,这篇文章都将为你提供一条清晰的学习路径。让我们一起开始这段旅程吧!
|
13天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。