你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> UISlider 滑塊控件―IOS開發

UISlider 滑塊控件―IOS開發

編輯:關於IOS

PC上的滑塊是很丑陋的,因為我們只能通過鼠標去拖動他。不過當Jobs把它移植到IOS上時一切變得酷起來,因為我們可以通過手指去拖動它,這種感覺是很妙的。

滑塊為用戶提供了一種可見的做范圍調整的方法,用戶可以通過拖動一個滑動條改變它的值,並且可以對其配置以合適不同值域。你可以設置滑塊值的范圍,也可以在兩端加上圖片,以及進行各種調整讓它更美觀。滑塊非常適合用於表示在很大范圍(但不精確)的數值中進行選擇,比如音量設置、靈敏度控制等諸如此類的用途。

一、創建

滑塊是一個標准的UIControl。我們可以通過代碼創建,如同開關(UISwitch)的寬與高都會被忽略一樣滑塊的高也會被忽略(但是寬度不會):

 

[java]

  1. UISlider* mySlider = [ [ UISlider alloc ] initWithFrame:CGRectMake(20.0,10.0,200.0,0.0) ];//高度設為0就好
    二、設定范圍與默認值

     

    創建完畢的同時我們要設置好滑塊的范圍,如果你沒有設置,那麼會使用默認的 0.0 到 1.0 之間的值。UISlider提供了兩個屬性來設置范圍:mininumValue 和 maxinumValue:

     

    [java

    1. mySlider.mininumValue = 0.0;//下限
    2. mySlider.maxinumValue = 50.0;//上限 同時你也可以為滑塊設定一個默認值:

       

       

      [java]

      1. mySlider.value = 22.0;

         

        三、兩端添加圖片

        滑塊可以在任何一段顯示圖像。添加圖像後會導致滑動條縮短,所以記得要記得在創建的時候增加滑塊的寬度來適應圖像。

         

        [java] v

        1. [ mySlider setMininumTrackImage: [ UIImage applicationImageNamed:@min.png ] forState: UIControlStateNormal ];
        2. [ mySlider setMaxinumTrackImage: [ UIImage applicationImageNamed:@max.png ] forState: UIControlStateNormal ]; 你可以根據滑塊的各種不同狀態顯示不同的圖像。下面是可用狀態:

           

          UIControlStateNormal

          UIControlStateHighlighted

          UIControlStateDisabled

          UIControlStateDisabled

          UIControlStateSelected

          四、顯示控件

           

          [java]

          1. [ parentView addSubview:myslider ];//添加到父視圖
          2. [ self.navigationItem.titleView addSubview:myslider ];//添加到導航欄

            五、讀取控件值

             

            [java]

            1. float value = mySlider.value;
              六、通知

               

              要想在滑塊值改變時收到通知,可以用UIControl類的addTarget方法為UIControlEventValueChanged事件添加一個動作。

               

              [java]

              1. [ mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEventValueChanged ]; 只要滑塊停放(注意是停放,如果要在拖動中也觸發,請看後文)到新的位置,你的動作方法就會被調用:

                 

                 

                [java]

                1. - (void) sliderValueChanged:(id)sender{
                2. UISlider* control = (UISlider*)sender;
                3. if(control == mySlider){
                4. float value = control.value;
                5. /* 添加自己的處理代碼 */
                6. }
                7. } 如果要在拖動中也觸發,需要設置滑塊的 continuos 屬性:

                   

                   

                  [java]

                  1. mySlider.continuous = YES ;
                    這個通知最簡單的一個實例就是實時顯示滑塊的值,很奇怪的蘋果顯示滑塊的值是一個私有的API(setShowValue),私有就私有,大不了我不用就是。我們可以用一個UILabel來顯示值,在每次觸發上面的方法時改變label的值,不就可以實時顯示了嗎?當然我們可以做的不僅僅是這個,還有更多的 cool 事情可以去實現,就看你的手段與想象力了。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved