UISegmentedControl的详细使用

当用户输入不仅仅是布尔值时,可使用分段控件 (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中的一些设置


主要参考分段选择器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,720评论 2 7
  • //设置尺寸为屏幕尺寸的时候self.window = [[UIWindow alloc] initWithFra...
    LuckTime阅读 833评论 0 0
  • 1、设置UILabel行间距 NSMutableAttributedString* attrString = [[...
    十年一品温如言1008阅读 1,705评论 0 3
  • 七月流火,八月未央。 八月的第一天,烈日与暴雨次第登场,尘埃飞扬。 这样的时光,总是最长又最短,像那些被我们挥霍后...
    自由落体的瓦阅读 452评论 3 5
  • 姓名:庹亚军 公司:宁波贞观电器有限公司 组别:第235期 利他一组 【日精进打卡第 53天】 【知~学习】 《六...
    tyj小电工阅读 109评论 0 0