一,创建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一致