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

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

首先介紹的是UISwitch, 人們習(xí)慣叫它開關(guān).

如下圖所示, 它就是UISwitch


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

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

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

  • UISlider


    調(diào)節(jié)音量的UISlider

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

  • 設(shè)置UISlider的屬性

  • 設(shè)置當(dāng)前的slider的值
    slider.value = 0.5;

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

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

  • 以上最大和最小可以根據(jù)情況調(diào)節(jié)

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

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

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

  • 設(shè)置未劃過的區(qū)域的顏色
    slider.maximumTrackTintColor = [UIColor lightGrayColor];

  • 設(shè)置已劃過的區(qū)域的顏色
    slider.minimumTrackTintColor = [UIColor redColor];

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

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

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

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

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

下面介紹UISegmentedControl的使用

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


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

下面介紹UIPageControl

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


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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搔驼,一起剝皮案震驚了整個濱河市秫舌,隨后出現(xiàn)的幾起案子脱盲,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡叠纹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門敞葛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吊洼,“玉大人,你說我怎么就攤上這事制肮。” “怎么了递沪?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵豺鼻,是天一觀的道長。 經(jīng)常有香客問我款慨,道長儒飒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任檩奠,我火速辦了婚禮桩了,結(jié)果婚禮上附帽,老公的妹妹穿的比我還像新娘。我一直安慰自己井誉,他們只是感情好蕉扮,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颗圣,像睡著了一般喳钟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上在岂,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天奔则,我揣著相機與錄音,去河邊找鬼蔽午。 笑死易茬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的及老。 我是一名探鬼主播抽莱,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼写半!你這毒婦竟也來了岸蜗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤叠蝇,失蹤者是張志新(化名)和其女友劉穎璃岳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悔捶,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡铃慷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜕该。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犁柜。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖堂淡,靈堂內(nèi)的尸體忽然破棺而出馋缅,到底是詐尸還是另有隱情,我是刑警寧澤绢淀,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布萤悴,位于F島的核電站,受9級特大地震影響皆的,放射性物質(zhì)發(fā)生泄漏覆履。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硝全。 院中可真熱鬧栖雾,春花似錦、人聲如沸伟众。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赂鲤。三九已至噪径,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間数初,已是汗流浹背找爱。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泡孩,地道東北人车摄。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像仑鸥,于是被迫代替她去往敵國和親吮播。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

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