iOS滑動條UISlider的使用方法

2021-09-06 21:34:31 字數 3314 閱讀 9353

1、ios:進度條控制項的詳細使用----

由於專案的需求,學習使用了一下滑動條uislider的使用方法,這裡記錄一下。

首先看我們實現出來的效果:

如上圖所示,在圖中有四個內容:滑動條本身、最小值label、最大值label、當前值label。

隨著滑動條的左右滑動,中間的當前值label會跟著做出變化。

現在看看怎麼實現的:

// 滑動條slider  

uislider *slider = [[uislider alloc] initwithframe:cgrectmake((screenwidth - 150) / 2, 200, 150, 20)];

[self.view addsubview:slider];

我是用純**建立的,當然也可以直接在storyboard中拖乙個到介面上,那樣其實很簡單,就不說了。

寬度我用了乙個自定義的螢幕寬度常量。這裡要注意的一點是,滑動條的高度,如果設為0,其實還是會正常顯示。但是!一旦高度設為0,滑動條將不能左右滑動!我就入過這個坑。。。找了半天沒找到原因,最終發現是這裡的問題。

當然我們還僅僅定義了滑動條的位置,還有很多屬性沒有定義,我們接著設定:

// 滑動條slider  

uislider *slider = [[uislider alloc] initwithframe:cgrectmake((screenwidth - 150) / 2, 200, 150, 20)];

slider.minimumvalue = 9;// 設定最小值

slider.maximumvalue = 11;// 設定最大值

slider.value = (slider.minimumvalue + slider.maximumvalue) / 2;// 設定初始值

slider.continuous = yes;// 設定可連續變化

// slider.minimumtracktintcolor = [uicolor greencolor]; //滑輪左邊顏色,如果設定了左邊的就不會顯示

// slider.maximumtracktintcolor = [uicolor redcolor]; //滑輪右邊顏色,如果設定了右邊的就不會顯示

// slider.thumbtintcolor = [uicolor redcolor];//設定了滑輪的顏色,如果設定了滑輪的樣式就不會顯示

[slider addtarget:self action:@selector(slidervaluechanged:) forcontrolevents:uicontroleventvaluechanged];// 針對值變化新增響應方法

[self.view addsubview:slider];

如上所示,在**中,我們設定了最大值、最小值、當前值。也可以改變滑動條左邊、右邊一集滑塊本身的顏色,不過我們這裡採用預設的設定,更改方法**中也寫了。除了可以設定顏色外,還可以設定最大最小值處的。

現在我們注意乙個設定:slider.continuous = yes; 這個設定有什麼用呢?設為yes後,我們才能在拖動滑塊的過程中持續獲取其值變更事件,如果是no,則只有在滑動停止時才會獲取變更事件。

這個變更事件又是什麼呢?我們只是對乙個按鈕設定響應方法的時候,設定的響應事件是touch up inside。在滑動條中,相對應的就是valuechanged。所以我們設定響應方法時,也是針對的這個方法。

建立labelde**很常見,這裡就直接貼出來了:

// 當前值label  

self.valuelabel = [[uilabel alloc] initwithframe:cgrectmake((screenwidth - 100) / 2, slider.frame.origin.y + 30, 100, 20)];

self.valuelabel.textalignment = nstextalignmentcenter;

self.valuelabel.text = [nsstring stringwithformat:@"%.1f", slider.value];

[self.view addsubview:self.valuelabel];

// 最小值label

uilabel *minlabel = [[uilabel alloc] initwithframe:cgrectmake(slider.frame.origin.x - 35, slider.frame.origin.y, 30, 20)];

minlabel.textalignment = nstextalignmentright;

minlabel.text = [nsstring stringwithformat:@"%.1f", slider.minimumvalue];

[self.view addsubview:minlabel];

// 最大值label

uilabel *maxlabel = [[uilabel alloc] initwithframe:cgrectmake(slider.frame.origin.x + slider.frame.size.width + 5, slider.frame.origin.y, 30, 20)];

maxlabel.textalignment = nstextalignmentleft;

maxlabel.text = [nsstring stringwithformat:@"%.1f", slider.maximumvalue];

[self.view addsubview:maxlabel];

這裡值得注意的是,我們label的值並不是直接定義的,而是獲取滑動條的最大、最小、當前值,然後取小數點前一位顯示的,因為滑動條是連續變化的,其值是浮點型的連續小數,如果不取小數點後的位數,得到的將是沒有規律的小數。

我們要做到的是當前值的label顯示的內容隨著滑動條的滑動而變化,那麼只需要在滑動條的響應方法中設定label的顯示內容就可以了,注意同樣要取小數點前一位:

// slider變動時改變label值  

- (void)slidervaluechanged:(id)sender

因為我們continuous設為了yes,所以顯示的當前值會隨著拖動實時改變。

以上,就是滑動條的使用方法了。

這是我的示例工程:

iOS下UISlider的訂製樣式

近期專案要使用slider,需要做成的樣式如下 實現首先要建立乙個繼承uislider的子類,因為改變滑條高度的函式只有在子類繼承後才能生效,附上改變滑條高度的 在子類的.m檔案裡寫 cgrect trackrectforbounds cgrect bounds bounds super track...

iOS開發 UISlider與UISwitch控制項

1 uislider控制項就像其名字一樣,是乙個像滑動變阻器的控制項 上圖中的圓圈可以移動,它處在不同的位置,這個uislider會有不同的值。接下來的例子是關於uislider的簡單使用。1 假設我們已經建立了乙個single view application,開啟viewcontroller.x...

iOS開發中UISlider的簡單使用

首先在.h檔案中宣告乙個屬性 property nonatomic,strong uislider slider 在.m檔案中初始化並設定屬性 初始化並確定frame self slider uislider alloc initwithframe cgrectmake 50,200,260,10 ...