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 ...