切換控件-UISegmentedControl

  • 作為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之間的層級數量,給用戶較好的體驗.
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,252評論 4 61
  • 一個人 坐在樓頂上 耳畔是微微的風 星星一閃一閃入云層 像極了媽媽的眼睛
    漠_北閱讀 294評論 0 0
  • 每一次,總是自己靜靜的沉寂在夜色中,每一次,總會有那些徹入心骨的歌聲陪伴我。。。、 心里總想著寫下一點東西,對自己...
    繁華落盡_曼珠沙華閱讀 304評論 0 0
  • 2016年,互聯網行業異軍突起的一個風口是共享自行車,互聯網業界和資本市場也對這種模式情有獨鐘。 毫無疑問,摩拜單...
    如夢如幻影閱讀 716評論 1 4