這篇博客主要是闡述四個繼承于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ǔ)使用方法, 希望對大家有幫助!
友情提示: 不要胡亂的粘貼代碼, 因為有一些屬性之間是有沖突的, 希望愿意看的童鞋們一行一行的去敲!