zoukankan      html  css  js  c++  java
  • ios之UISlider

    初始化一个Slider

     

    UISlider *slider = [[UISlider alloc]initWithFrame:CGRectMake(0, 400,320 , 20)];

    滑块是一个标准的UIControl。我们可以通过代码创建,如同开关(UISwitch)的宽与高都会被忽略一样滑块的高也会被忽略(但是宽度不会):
     
    二、设定范围与默认值

     

    创建完毕的同时我们要设置好滑块的范围,如果你没有设置,那么会使用默认的 0.0 到 1.0 之间的值。UISlider提供了两个属性来设置范围:mininumValue 和 maxinumValue:

     

    1. mySlider.mininumValue = 0.0;//下限  
    2. mySlider.maxinumValue = 50.0;//上限  
    同时你也可以为滑块设定一个默认值:

     

     

     

    1. mySlider.value = 22.0;  

     

     

    改变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

     

    四、显示控件

     

    1. [ parentView addSubview:myslider ];//添加到父视图  
    2. 或  
    3. [ self.navigationItem.titleView addSubview:myslider ];//添加到导航栏  

    五、读取控件值

     

    1. float value = mySlider.value;  


    六、通知

     

    要想在滑块值改变时收到通知,可以用UIControl类的addTarget方法为UIControlEventValueChanged事件添加一个动作。

     

    1. [ mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEventValueChanged ];  

    只要滑块停放(注意是停放,如果要在拖动中也触发,请看后文)到新的位置,你的动作方法就会被调用:

     

     

    1. - (void) sliderValueChanged:(id)sender{  
    2.         UISlider* control = (UISlider*)sender;  
    3.         if(control == mySlider){  
    4.                   float value = control.value;  
    5.                      
    6.          }  
    7. }  

    如果要在拖动中也触发,需要设置滑块的 continuos 属性:

     

     

    1. mySlider.continuous = YES ;  


    这个通知最简单的一个实例就是实时显示滑块的值,很奇怪的苹果显示滑块的值是一个私有的API(setShowValue),私有就私有,大不了我不用就是。我们可以用一个UILabel来显示值,在每次触发上面的方法时改变label的值,不就可以实时显示了吗?当然我们可以做的不仅仅是这个,还有更多的 cool 事情可以去实现,就看你的手段与想象力了。 

     

     

    主要是UISlider跟换thumb 与 状态条 bar 的替换

     
       // 让Slider控件旋转90度 垂直
     
        CGAffineTransform rotation = CGAffineTransformMakeRotation(-1.57079633);

        self.volumeSlider.transform = rotation;

     

     

     //跟换Thumb

     

     

     [self.volumeSlider setThumbImage:image1 forState:UIControlStateNormal];

     

     

    // 跟换bar  并且实现拖动效果

     

      //覆盖的图片

     

    [self.volumeSlider setMinimumTrackImage:image2 forState:UIControlStateNormal];

     

      //底片 

     [self.volumeSlider setMaximumTrackImage:image forState:UIControlStateNormal];

  • 相关阅读:
    315前夜
    学习,真正地学习
    华仔成都2007
    如果建筑师必须如网页设计师一般工作[转]
    “散文”
    笨小孩
    幸存者游戏启示[摘录]
    通过配置获取客户端所属服务器IP或服务器名
    观《三国之见龙卸甲》
    散文(二)
  • 原文地址:https://www.cnblogs.com/yulang314/p/3550359.html
Copyright © 2011-2022 走看看