1. 程式人生 > >IOS開發實戰:UISegmentedControl分段控制器

IOS開發實戰:UISegmentedControl分段控制器

一,建立UISegmentedControl分段控制器專案

UISegmentedControl 用於管理和實現一組內容的切換邏輯,常用於導航欄的標題檢視中

1,開啟Xcode,建立名為 UISegmentedControl 的工程
如何建立工程:Xcode建立HelloWorld專案

2,在ViewController.m的viewDidLoad方法中新增如下程式碼:

- (void)viewDidLoad {
    [super viewDidLoad];
    // 使用帶Item引數的構造方法初始化UISegmentedontrol物件,陣列決定了按鈕數量和標題
    UISegmentedControl
* seg = [[UISegmentedControl alloc]initWithItems:@[@"one", @"", @"three", @"four"]]; // 設定控制在介面上的位置 seg.frame = CGRectMake(20, 100, 280, 30); // 設定指定按鈕圖案,從0開始 [seg setImage:[[UIImage imageNamed:@"image"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forSegmentAtIndex:1]; // 設定按鈕內容的位置偏移
[seg setContentOffset:CGSizeMake(10, 10) forSegmentAtIndex:0]; // 預設假-切換按鈕模式:使用者點選一個按鈕後,此按鈕一直保持選中狀態,直到使用者切換至另一個按鈕 // 設定為真-觸發按鈕模式:使用者手指離開屏幕後,按鈕不再保持選中狀態 seg.momentary = NO; // 將控制元件新增到當前檢視上 [self.view addSubview:seg]; }

圖片新增請檢視:
IOS開發實戰:UIButton按鈕控制元件 中”為UIButton新增背景和內容圖片”部分

執行程式:

這裡寫圖片描述

二,對UISegmentedControl中的按鈕進行增,刪,改操作

UISegmentedControl控制元件初始化後,可以進行動態的新增刪除和修改操作
// 在指定位置插入一個新的標題按鈕
// 引數1:設定標題
// 引數2:設定插入的位置
// 引數3:是否帶動畫效果
// 與此方法對應還有一個插入圖片按鈕的方法
[seg insertSegmentWithTitle:@"new" atIndex:2 animated:YES];
// 刪除一個指定按鈕
[seg removeSegmentAtIndex:1 animated:YES];
// 重新設定按鈕標題
// 與此方法對應還有一個重新設定圖片的方法
[seg setTitle:@"replace" forSegmentAtIndex:1];
// 移除所有按鈕
[seg removeAllSegments]

三,UISegmentedControl中按鈕寬度的自適應

UISegmentedControl中的按鈕寬度預設為平均分配,若按鈕標題超長自動截斷
開發者可以手動對控制元件中每個按鈕的寬度進行設定,便於按鈕寬度與文字相適應
//設定指定按鈕的寬度
[seg setWidth:130 forSegmentAtIndex:3]
但是,這種寫法有一個致命的缺點
因為,可能開發者並不知道按鈕標題文字所佔的寬度,使用強制計算很麻煩
所以,UISegmentedControl還提供了寬度自適應屬性
能夠讓UISegmentedControl自動計算按鈕需要的寬度,進行寬度的自適應
// 開啟UISegmentedControl按鈕寬度的自適應
seg.apportionsSegmentWidthsByContent = YES;

四,UISegmentedControl觸發方法

UISegmentedControl的觸發方法也是通過addTarget方法設定的,與UIPageControl一致