美文网首页
UISegmentedControl的详细使用

UISegmentedControl的详细使用

作者: 阿尔法代码狗 | 来源:发表于2016-08-12 17:07 被阅读1517次

当用户输入不仅仅是布尔值时,可使用分段控件 (UISegmentedControl)。分段控件提供一栏按钮(有时称为按钮栏),但只能激活其中一个按钮。分段控件会导致用户在屏幕上看到的内容发 生变化。它们常用于在不同类别的信息之间选择,或在不同的应用屏幕之间切换。下面介绍基本属性和基本方法的使用。

1.初始化UISegmentedControl

初始化方法:传入的数组可以是字符串也可以是UIImage对象的图片数组

NSArray *segmentedArray = [[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"4",nil];

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:segmentedArray];

segmentedControl.frame = CGRectMake(20.0, 20.0, 250.0, 50.0);

segmentedControl.selectedSegmentIndex = 2;//设置默认选择项索引

segmentedControl.tintColor = [UIColor redColor];

2. 设置样式

⚠️:这个属性已经废弃,不再起任何作用,它的枚举如下:

segmentedControl.segmentedControlStyle = UISegmentedControlStylePlain

3.设置在点击后是否恢复原样

segmentedControl.momentary = YES

4.其他属性

设置标签宽度是否随内容自适应:

@property(nonatomic) BOOL apportionsSegmentWidthsByContent;

注意:如果设置为NO,则所有标签宽度一致,为最大宽度。

5.获取指定索引选项的图片imageForSegmentAtIndex:

UIImageView *imageForSegmentAtIndex = [[UIImageViewalloc]initWithImage:[segmentedControl imageForSegmentAtIndex:1]];

imageForSegmentAtIndex.frame = CGRectMake(60.0, 120.0, 30.0, 30.0);  ;

6.获取指定索引选项的标题titleForSegmentAtIndex

UILabel *titleForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(100.0, 160.0, 30.0, 30.0)];

titleForSegmentAtIndex.text = [segmentedControl titleForSegmentAtIndex:0];

7.获取总选项数segmentedControl.numberOfSegments

UILabel *numberOfSegments = [[UILabel alloc]initWithFrame:CGRectMake(140.0, 170.0, 30.0, 30.0)];

numberOfSegments.text = [NSString stringWithFormat:@"%d",segmentedControl.numberOfSegments];

8.获取指定索引选项的宽度widthForSegmentAtIndex:

UILabel *widthForSegmentAtIndex = [[UILabel alloc]initWithFrame:CGRectMake(180.0, 210.0, 70.0, 30.0)];

widthForSegmentAtIndex.text = [NSString stringWithFormat:@"%f",[segmentedControl widthForSegmentAtIndex:2]];

9.设置指定索引选项不可选

// [segmentedControl setEnabled:NO forSegmentAtIndex:4];

10.判断指定索引选项是否可选

// BOOL enableFlag = [segmentedControl isEnabledForSegmentAtIndex:4];

11.添加委托方法

[mySegmentedControladdTarget:selfaction:@selector(segmentAction:)forControlEvents:UIControlEventValueChanged];  

12.实现委托方法

-(void)segmentAction:(UISegmentedControl *)Seg{

NSInteger Index = Seg.selectedSegmentIndex;

NSLog(@"Index %i", Index);

switch (Index) {

case 0:

[self selectmyView1];

break;

case 1:

[self selectmyView2];

break;

case 2:

[self selectmyView3];

break;

case 3:

[self selectmyView4];

break;

case 4:

[self selectmyView5];

break;

case 5:

[self selectmyView6];

break;

default:

break;

}

}

13. 项目中实际应用,放在导航栏中

自定义UISegmentedcontrol

UISegmentedControl *segmentedControl=[[UISegmentedControl alloc] initWithFrame:CGRectMake(80.0f, 8.0f, 200.0f, 30.0f) ];

[segmentedControl insertSegmentWithTitle:@"1" atIndex:0 animated:YES];

[segmentedControl insertSegmentWithTitle:@"2" atIndex:1 animated:YES];

segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;

segmentedControl.momentary = YES;

segmentedControl.multipleTouchEnabled=NO;

[segmentedControl addTarget:self action:@selector(Selectbutton:) forControlEvents:UIControlEventValueChanged];

UIBarButtonItem *segButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];  //自定义UIBarButtonItem,封装定义好的UIsegmented。

[segmentedControl release];

self.navigationItem.rightBarButtonItem = segButton;  //添加到导航栏中

[segButton release];

14.⚠️:下面是一些找到的图片,在xib中的一些设置

主要参考分段选择器

相关文章

网友评论

      本文标题:UISegmentedControl的详细使用

      本文链接:https://www.haomeiwen.com/subject/ulkesttx.html