这个空间用的不是很多,但是用到你就需要研究一下.
NSArray * array = @[@"1",@"2",@"3",@"4",@"5"];
UISegmentedControl * segment = [[UISegmentedControl alloc] initWithItems:array];
segment.frame = CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 60);
//属性
/*
typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {
UISegmentedControlStylePlain,
UISegmentedControlStyleBordered,
UISegmentedControlStyleBar,
UISegmentedControlStyleBezeled,
} NS_DEPRECATED_IOS(2_0, 7_0, "The segmentedControlStyle property no longer has any effect") __TVOS_PROHIBITED;
*/
segment.segmentedControlStyle = UISegmentedControlStyleBar;//已经被丢弃用了
/*
设置是否保持选中状态:
注意:如果设置为YES,点击结束后,将不保持选中状态,默认为NO
*/
segment.momentary = NO;
NSLog(@"numberofsegment%ld",segment.numberOfSegments);//只读属性; 获取当前的个数
// 设置标签宽度是否随内容自适应:
// 注意:如果设置为NO,则除去自定义宽度的标签以外的所有标签宽度一致,为最大宽度。
segment.apportionsSegmentWidthsByContent = NO;
// 插入文字标签在index位置
[segment insertSegmentWithTitle:@"插入的" atIndex:1 animated:YES];
UIImage * image = [UIImage imageNamed:@"a"];
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//此处要关闭渲染,控件会自动渲染我们的图片
[segment insertSegmentWithImage:image atIndex:1 animated:YES];
// [segment removeSegmentAtIndex:1 animated:YES];//删除指定
// [segment removeAllSegments];//删除所有
[segment setTitle:@"重设" forSegmentAtIndex:1]; //重设标题
UIImage * image1 = [UIImage imageNamed:@"b"];
image1 = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[segment setImage:image1 forSegmentAtIndex:1];//重设图片
NSLog(@"%@",[segment titleForSegmentAtIndex:1]);//获取标签title
NSLog(@"%@",[segment imageForSegmentAtIndex:1]);
// 根据索引设置相应标签宽度
[segment setWidth:50 forSegmentAtIndex:1];
NSLog(@"%f",[segment widthForSegmentAtIndex:1]);//根据索引获取标签宽度
//设置标签内容的偏移量 注意:这个偏移量指的是标签的文字或者图片
[segment setContentOffset:CGSizeMake(100, 100) forSegmentAtIndex:1];
NSLog(@"%f",[segment contentOffsetForSegmentAtIndex:1].width);//获取偏移量
[segment setEnabled:NO forSegmentAtIndex:1];//根据所以设置标签是否有效(默认有效)
NSLog(@"%d",[segment isEnabledForSegmentAtIndex:1]);//根据索引获取当前标签是否有效
NSLog(@"%ld",segment.selectedSegmentIndex);//设置和获取当前选中的标签索引
segment.tintColor = [UIColor redColor];//设置标签风格颜色
/*
UIBarMetricsDefault, //充满
UIBarMetricsCompact,
UIBarMetricsDefaultPrompt = 101, // 只有在提示属性条适用,tabbar,
UIBarMetricsCompactPrompt,
UIBarMetricsLandscapePhone NS_ENUM_DEPRECATED_IOS(5_0, 8_0, "Use UIBarMetricsCompact instead") = UIBarMetricsCompact,
UIBarMetricsLandscapePhonePrompt
*/
[segment setBackgroundImage:[UIImage imageNamed:@"1"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
// 设置标签之间分割线的图案
// [segment setDividerImage:[UIImage imageNamed:@"2"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
/*
获取标签之间分割线的图案
- (UIImage *)dividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics)barMetrics
*/
// [segment setTitleTextAttributes:@{NSShadowAttributeName:@2} forState:UIControlStateNormal];//通过Attribute字符串属性字典设置标签标题
[segment setContentPositionAdjustment:UIOffsetMake(10, 10) forSegmentType:UISegmentedControlSegmentAny barMetrics:UIBarMetricsDefault];//自行设置标签内容的偏移量
/*
UISegmentedControlSegmentAny = 0,//所有标签都受影响
UISegmentedControlSegmentLeft = 1, //只有左边部分受到影响
UISegmentedControlSegmentCenter = 2, // 只有中间部分受到影响
UISegmentedControlSegmentRight = 3, // 只有右边部分受到影响
UISegmentedControlSegmentAlone = 4, // 在只有一个标签的时候生效
获取自定义偏移量
- (UIOffset)contentPositionAdjustmentForSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetrics
*/
[segment addTarget:self action:@selector(segmentclick:) forControlEvents:UIControlEventValueChanged];//必须UIControlEventValueChanged
[self.view addSubview:segment];