詳細闡述UISwitch, UISlider, UISegmentedControl, UIPageControl基本的使用

這篇博客主要是闡述四個繼承于UIControl的視圖控制器

首先介紹的是UISwitch, 人們習慣叫它開關.

如下圖所示, 它就是UISwitch


  • 創建一個開關, 注意其中frame的Width和height對switch不起作用, 它默認使用系統默認的大小
    UISwitch *swi = [[UISwitch alloc] initWithFrame:CGRectMake(180, 400, 20, 20)];
    [self.view addSubview:swi];
  • 設置UISwitch的一些屬性
  • 開關開啟后的背景顏色
    swi.onTintColor = [UIColor orangeColor];
  • 開關關閉狀態下的邊框顏色及開關切換時的顏色(null_resettable)
    swi.tintColor = [UIColor redColor];
  • 開關的按鈕顏色
    swi.thumbTintColor = [UIColor cyanColor];
  • 開關開啟/關閉時的圖片(iOS7之后失效)
    swi.onImage = [UIImage imageNamed:@"4"];
    swi.offImage = [UIImage imageNamed:@"4"];
  • 這個屬性用來判斷switchControl的開閉狀態(YES為開啟, NO為關閉)
  • 可以通過setter方法, 改變UISwitch的初始狀態
  • 設置開關的初始狀態, 如果setOn:后接YES, 則初始狀態為開啟, 反之也是.
    [swi setOn:NO animated:YES];
  • 給UISwitch添加事件
    // 為UISwitch綁定事件
    [swi addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];
    // 實現綁定事件(判斷條件為swi.on, 這個屬性是用來判斷開關的開閉的)
    - (void)switchAction:(UISwitch *)swi {
    if (swi.on == YES) {
    NSLog(@"開");
    } else {
    NSLog(@"關");
    }
    }

下面介紹的是UISlider(俗稱滑塊), 它的作用是用于調節視頻播放進度, 和音量的大小.

  • UISlider繼承于UIControl, 它提供了一系列連續的值, 滑塊停在不同的地方, 所返回的值也不同

  • UISlider


    調節音量的UISlider

    調節電影播放進度的UISlider
  • 創建一個UISlider
    UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(20, 500, 374, 20)];
    [self.view addSubview:slider];

  • 設置UISlider的屬性

  • 設置當前的slider的值
    slider.value = 0.5;

  • slider的最小值
    slider.minimumValue = 0.0;

  • slider的最大值
    slider.maximumValue = 1.0;

  • 以上最大和最小可以根據情況調節

  • 添加(最小值的那邊)左邊的圖片
    slider.minimumValueImage = [UIImage imageNamed:@"Unknown-2.png"];

  • 添加(最大值的那邊)右邊的圖片
    slider.maximumValueImage = [UIImage imageNamed:@"Unknown-5.png"];

  • 當為YES時, 滑塊在滑動過程中每時每刻都在輸出Value的值, 當為NO時, 滑塊在滑動過程中不輸出value的值, 只有松手的時候才輸出value值
    slider.continuous = NO;

  • 設置未劃過的區域的顏色
    slider.maximumTrackTintColor = [UIColor lightGrayColor];

  • 設置已劃過的區域的顏色
    slider.minimumTrackTintColor = [UIColor redColor];

  • 設置滑塊按鈕的顏色
    slider.thumbTintColor = [UIColor cyanColor];

  • 設置進度條滑塊右邊的圖片
    [slider setMaximumTrackImage:[UIImage imageNamed:@"player_slider_playback_right.png"] forState:UIControlStateNormal];

  • 設置進度條滑塊左邊的圖片
    [slider setMinimumTrackImage:[UIImage imageNamed:@"player_slider_playback_left.png"] forState:UIControlStateNormal];

  • 設置進度條滑塊的圖片
    [slider setThumbImage:[UIImage imageNamed:@"player_slider_playback_thumb.png"] forState:UIControlStateNormal];

  • slider的綁定事件
    // 綁定事件
    [slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
    // 實現slider的綁定事件
    - (void)sliderAction:(UISlider *)slider {
    NSLog(@"%0.2f", slider.value);
    }

下面介紹UISegmentedControl的使用

  • UISegmentedControl是一個分段控制器, 每一個item都能被點擊, 它相當于一排UIButton
  • UISegmentedControl的顯示效果如下圖


  • UISegmentedControl(分段控制器)
  • UISegmentedControl的創建
    UISegmentedControl *segMent = [[UISegmentedControl alloc] initWithItems:@[@"first", @"second", @"last"]];
  • segment不給frame, 系統會自動計算大小
    // 打印當前segment的frame
    NSLog(@"segment的frame大小 = %@", NSStringFromCGRect(segMent.frame));
    // 設置segment的frame
    segMent.frame = CGRectMake(20, 50, 374, 40);
    [self.view addSubview:segMent];
  • 設置segMent的點擊效果, 默認是NO, 當為YES時, 點擊效果為變換背景色閃爍一下然后恢復原樣, 為NO時, 只是變換背景色, 不閃爍.
    segMent.momentary = NO;
  • 分段控制器的items的個數
    NSInteger number = segMent.numberOfSegments;
  • 在segment中的指定下標下插入一個標題或者圖片作為segment的item
    [segMent insertSegmentWithImage:[UIImage imageNamed:@"Unknow.png"] atIndex:0 animated:YES];
    [segMent insertSegmentWithTitle:@"插入一個標題" atIndex:0 animated:YES];
  • 移除指定下標對應的segment的item
    [segMent removeSegmentAtIndex:0 animated:YES];
  • 移除全部的segment的item
    [segMent removeAllSegments];
  • 給segMent的邊框和選中后的背景顏色, 字體顏色賦予一個顏色
    segMent.tintColor = [UIColor orangeColor];
  • selectedSegmentIndex表示segment當前選中的下標
    segMent.selectedSegmentIndex = 1;
  • 修改segMent指定下標對應的標題
    [segMent setTitle:@"lala" forSegmentAtIndex:0];
  • 設置對應下標下的segment的item的圖片
    [segMent setImage:[UIImage imageNamed:@"UnKonw.png"] forSegmentAtIndex:0];
  • 給某個下標下的標題重新設置寬度
    [segMent setWidth:0 forSegmentAtIndex:0];
  • 設置對應下標內容的偏移
    [segMent setContentOffset:CGSizeMake(0, 0) forSegmentAtIndex:0];
  • segMent對應下標是否能選中(YES能, NO不能)
    [segMent setEnabled:YES forSegmentAtIndex:0];
  • 如果分段控制器的段寬為0時, 并且該屬性為YES, 系統會自動計算內容的寬度, 并調整segment每一個item的寬度
    segMent.apportionsSegmentWidthsByContent = YES;
  • 給segMent添加事件
    [segMent addTarget:self action:@selector(segMentAction:) forControlEvents:UIControlEventValueChanged];
  • 實現segMen的綁定事件
    - (void)segMentAction:(UISegmentedControl *)segMent {
    switch (segMent.numberOfSegments) {
    case 1:
    NSLog(@"第一個");
    break;
    case 2:
    NSLog(@"第二個");
    break;
    case 3:
    NSLog(@"第三個");
    break;
    default:
    break;
    }
    }

下面介紹UIPageControl

  • UIPageControl類提供一行點來指示當前顯示的是多頁面視圖的哪一頁, 當用戶界面需要按頁面顯示時, 使用UIPageControl控件將要顯示的用戶界面內容分頁進行顯示會使編程工作變得更加方便快捷.
  • 顯示效果如圖


  • UIPageControl (分頁控制器)
  • 創建UIPageControl
    UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(50, 250, 300, 50)];
    [self.view addSubview:pageControl];
  • 設置分頁控制器的頁數(默認為0)
    pageControl.numberOfPages = 10;
  • 分頁控制器的當前頁(默認為0)
    pageControl.currentPage = 0;
  • 設置分頁控制器點的顏色
    pageControl.pageIndicatorTintColor = [UIColor greenColor];
  • 當分頁控制器只有一頁的時候(YES, 隱藏分頁控制器)默認是NO(不隱藏)
    pageControl.hidesForSinglePage = YES;
  • 關閉系統事件page的切換顯示效果(YES的時候), 并且直到調用updateCurrentPageDisplay這個方法, 才會顯示
    pageControl.defersCurrentPageDisplay = YES;
  • 獲取點的大小
    CGSize size = [pageControl sizeForNumberOfPages:0];
    NSLog(@"%@", NSStringFromCGSize(size));
  • 當前頁的點的顏色
    pageControl.currentPageIndicatorTintColor = [UIColor redColor];
  • 給pageControl綁定事件
    [pageControl addTarget:self action:@selector(pageControlChange:) forControlEvents:UIControlEventValueChanged];
    }
  • 實現pageControl的綁定事件()
    - (void)pageControlChange:(UIPageControl *)pageControl {
    NSLog(@"點了");
    // 更新當前頁碼
    [pageControl updateCurrentPageDisplay];
    }
    以上內容就是四個控件的基礎使用方法, 希望對大家有幫助!
    友情提示: 不要胡亂的粘貼代碼, 因為有一些屬性之間是有沖突的, 希望愿意看的童鞋們一行一行的去敲!

如果有錯誤或者不足的地方, 希望大家指出, 以后還會相應的寫一些類似的博客, 謝謝大家!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • { 11、核心動畫 需要簽協議,但是系統幫簽好 一、CABasicAnimation 1、創建基礎動畫對象 CAB...
    CYC666閱讀 1,589評論 2 4
  • UIControl UIControl:有控制功能的視圖的父類 只要跟控制有關的類都是繼承自該類,同時我們通常不會...
    隔壁王叔不在家閱讀 719評論 0 0
  • 首先不得不說 UIButton的父類就是UIControl今天主要介紹UIControl的四種控件 UISwitc...
    9bf19a4010ab閱讀 381評論 0 0
  • 匯總 滑動條控件.步進控件.開關控件.選項卡控件 UISlider 滑動條 //1.UISlider滑塊控件UIS...
    nothing_c閱讀 274評論 0 0
  • 迷離 各種戲里排徊 幾度陰晴 海旺樹的葉子黃了又青 彩虹傘的上方 水墨煙云 翻涌飛騰 雨下夠了 風刮完了 海旺樹滴...
    三月品閱讀 161評論 0 0