- 作為iOS原生的切換控件,我覺得UISegmentedControl是非常的好用,其實在上一篇文章 中,我也是有提到的,那里是作為UISearchBar的擴展欄來使用.直接上代碼來認識一下UISegmentedControl.
- (void)viewDidLoad {
[super viewDidLoad];
// 創建UISegmentedControl
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"視頻", @"聲音",@"圖片"]];
segmentedControl.frame = CGRectMake(40, 100, 300, 40);
[self.view addSubview:segmentedControl];
// 默認選中下標為1的item
segmentedControl.selectedSegmentIndex = 1;
}
-
顯示如圖
Snip20161208_5.png 按照我們原來的步驟講一下UISegmentedControl中常用的屬性以及方法,其實在創建出來默認是沒有選中的按鈕的,所以就要通過一些屬性以及方法來設置了,直接上代碼
// 默認選中下標為1的item
segmentedControl.selectedSegmentIndex = 1;
// 設置點擊按鈕是否選中
segmentedControl.momentary = YES;
- UISegmentedControl切換模塊按鈕的增,刪,改以及布局操作
- 對于UISegmentedControl來說,還以一些比較強大的功能,可以動態的對其內部的切換模塊進行增,刪,改操作,展示很流暢的動畫效果,十分有利于用戶體驗,下面直接上來演示一下
// 插入一個切換模塊按鈕,這些有一個平滑的效果
// 插入背景為hyf圖片的按鈕
[segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"hyf"] atIndex:1 animated:YES];
// 插入標題為新增的按鈕
[segmentedControl insertSegmentWithTitle:@"新增" atIndex:0 animated:YES];
// 刪除操作
[segmentedControl removeSegmentAtIndex:1 animated:YES];
// 刪除所有的模塊按鈕
[segmentedControl removeAllSegments];
// 修改指定下標模塊按鈕的標題
[segmentedControl setTitle:@"修改" forSegmentAtIndex:1];
// 修改指定下標模塊按鈕的背景圖片
[segmentedControl setImage:[UIImage imageNamed:@"hyf改"] forSegmentAtIndex:1];
// 自動根據內容計算模塊按鈕的寬度
segmentedControl.apportionsSegmentWidthsByContent = YES;
- 根據之前的文章,講述了UIButton添加觸發方法,那么大家應該可以聯想到,切換控件也可以添加觸發方法,其實每個控件的都是差不的,思想都是一樣的.那么這里就講述一下給UISegmentedControl控件對象添加觸發方法,直接上代碼
- (void)viewDidLoad {
[super viewDidLoad];
// 創建UISegmentedControl
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"視頻", @"聲音",@"圖片"]];
segmentedControl.frame = CGRectMake(40, 100, 300, 40);
[self.view addSubview:segmentedControl];
// 默認選中下標為1的item
segmentedControl.selectedSegmentIndex = 1;
// 自動根據內容計算模塊按鈕的寬度
segmentedControl.apportionsSegmentWidthsByContent = YES;
// 添加觸發方法
[segmentedControl addTarget:self action:@selector(click:) forControlEvents:UIControlEventValueChanged];
}
// 點擊修改背景顏色
-(void)click:(UISegmentedControl *)seg {
// 獲取當前選中的按鈕編號
NSInteger index = seg.selectedSegmentIndex;
// 根據獲取到的index,修改背景顏色
switch (index)
{
case 0:
self.view.backgroundColor = [UIColor redColor]; break;
case 1:
self.view.backgroundColor = [UIColor yellowColor]; break;
case 2:
self.view.backgroundColor = [UIColor blueColor]; break;
default: break;
}
}
-
效果如下
UISegmentedControl.gif
- 代碼比較簡單。關鍵是理解UISegmentedControl的應用場景,靈活運用,在以前,我很多時候會把UISegmentedControl嵌套在UINavigationBar里面使用,以減少UINnavigationView之間的層級數量,給用戶較好的體驗.