UISegmentedControl集成关系:UISegmentedControl:UIControl:UIView:UIResponder:NSObject
- (void)viewDidLoad
{
[super viewDidLoad];
/**
1、初始化UISegmentedControl控件
- initWithItems:
*/
UISegmentedControl *segmented = [[UISegmentedControl alloc]initWithItems:@[@"家庭宽带",@"企业宽带"]];
segmented.frame = CGRectMake(0, 50, 320, 45);
[self.view addSubview:segmented]; //见图1
/**
2、管理Segment内容
- setImage:forSegmentAtIndex: 根据索引 设置标签图片
- imageForSegmentAtIndex: 根据索引 获取标签图片
- setTitle:forSegmentAtIndex: 根据索引 设置标签文字
- titleForSegmentAtIndex: 根据索引 获取标签文字
*/
[segmented setImage:[UIImage imageNamed:@"fan-128"] forSegmentAtIndex:0];
[segmented setImage:[UIImage imageNamed:@"tv"] forSegmentAtIndex:1]; //见图2
[segmented setTitle:@"风扇" forSegmentAtIndex:0];
[segmented setTitle:@"电视" forSegmentAtIndex:1]; //见图3
/**
3、管理Segment
.numberOfSegments 获取标签个数:(只读)
.selectedSegmentIndex 设置和获取当前选中的标签索引
- insertSegmentWithImage:atIndex:animated: 插入图片标签 在index位置
- insertSegmentWithTitle:atIndex:animated: 插入文字标签 在index位置
- removeAllSegments 删除所有标签
- removeSegmentAtIndex:animated: 删除index标签
*/
NSLog(@"%lu",(unsigned long)segmented.numberOfSegments);
[segmented setSelectedSegmentIndex:1];
[segmented addTarget:self action:@selector(segmentedControllerAction:) forControlEvents:UIControlEventValueChanged];
[segmented insertSegmentWithTitle:@"摄像头摄像头摄像头摄像头摄像头" atIndex:2 animated:YES]; //见图4
[segmented insertSegmentWithImage:[UIImage imageNamed:@"图层-2"] atIndex:3 animated:YES];//见图5
[segmented removeSegmentAtIndex:3 animated:YES];
/**
4、管理Segment的事件 和 外观
.momentary 设置是否保持选中状态,默认NO。注意:如果是YES,Segment点击完后不会显示选择状态也将不再更新selectedSegmentIndex的值
.segmentedControlStyle 注意:这个属性iOS7已经废弃。设置控件风格
- setEnabled:forSegmentAtIndex: 根据索引 设置标签是否有效(默认有效)
- isEnabledForSegmentAtIndex: 根据索引 获取标签是否有效
.apportionsSegmentWidthsByContent 设置标签宽度是否随内容自适应(默认NO)
- setWidth:forSegmentAtIndex: 根据索引 设置标签的宽度
- widthForSegmentAtIndex: 根据索引 获取标签的宽度
- setContentOffset:forSegmentAtIndex: 根据索引 设置标签内容的偏移量
- contentOffsetForSegmentAtIndex: 根据索引 获取标签内容的偏移量
*/
[segmented setMomentary:YES]; //见图6
[segmented setEnabled:NO forSegmentAtIndex:1]; //见图7
[segmented setApportionsSegmentWidthsByContent:YES]; //见图8
[segmented setWidth:80.0 forSegmentAtIndex:1];
[segmented setContentOffset:CGSizeMake(-10, -10) forSegmentAtIndex:1];//见图9
/**
5、个性化外观
.tintColor
- setBackgroundImage:forState:barMetrics: 设置某状态下segment的背景图案
- backgroundImageForState:barMetrics:
- setContentPositionAdjustment:forSegmentType:barMetrics: 自行设置标签内容的偏移量
- contentPositionAdjustmentForSegmentType:barMetrics:
UISegmentedControlSegmentAny = 0,//所有标签都受影响
UISegmentedControlSegmentLeft = 1, //只有左边部分受到影响
UISegmentedControlSegmentCenter = 2, // 只有中间部分受到影响
UISegmentedControlSegmentRight = 3, // 只有右边部分受到影响
UISegmentedControlSegmentAlone = 4, // 在只有一个标签的时候生效
- setDividerImage:forLeftSegmentState:rightSegmentState:barMetrics: 设置标签之间分割线的图案
- dividerImageForLeftSegmentState:rightSegmentState:barMetrics:
- setTitleTextAttributes:forState: 通过字符串属性字典 设置标签标题
- titleTextAttributesForState:
*/
segmented.tintColor = [UIColor redColor];//中间分割线的颜色 //见图10
[segmented setBackgroundImage:[UIImage imageNamed:@"homeVC_04"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];//正常背景图
[segmented setBackgroundImage:[UIImage imageNamed:@"homeVC_05"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];//选中后背景图
NSDictionary *normalTitleAttributes = @{NSForegroundColorAttributeName: [UIColor blueColor],
NSFontAttributeName: [UIFont systemFontOfSize:15]};
NSDictionary *selectedTitleAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor],
NSFontAttributeName: [UIFont boldSystemFontOfSize:15]};
[segmented setTitleTextAttributes:normalTitleAttributes forState:UIControlStateNormal]; //正常字体的属性
[segmented setTitleTextAttributes:selectedTitleAttributes forState:UIControlStateSelected]; //选中后字体的属性
}
-(void)segmentedControllerAction:(UISegmentedControl *)segmentedControl
{
switch (segmentedControl.selectedSegmentIndex)
{
case 0:
break;
default:
break;
}
}
图1
图2
图3
图4
图5
图6
图7
图8
图9
图10