IOS開發實戰:UISegmentedControl分段控制器
阿新 • • 發佈:2019-01-28
一,建立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一致