iOS——UISegmentedControl 的用法

来源:互联网 发布:淘宝运营商是真的吗 编辑:程序博客网 时间:2024/05/29 18:33

UISegmentedControl是iOS中的分段控件。
//Segmented 分段的、分割
每个segment都能被点击,相当于集成了若干个button。
通常我们会点击不同的segment来切换不同的view。

    //分配间距方法,默认最长,每个都是最长的。    self.segmentedcontrol=[[UISegmentedControl alloc]initWithItems:@[@"爽",@"爽啊",@"爽"]];    //设置大小位置,(父类的方法)    _segmentedcontrol.frame=CGRectMake(0, self.frame.origin.y+30, self.frame.size.width-50, 30);//    设置点击后是否恢复原样,默认是NO,不恢复.(是否保持选中状态)    _segmentedcontrol.momentary=YES;//   获取标签个数    NSInteger number=_segmentedcontrol.numberOfSegments;    NSLog(@"个数:%ld",(long)number);//设置标签宽度是否随内容自适应( 注意:如果设置为NO,则所有标签宽度一致,为最大宽度)    _segmentedcontrol.apportionsSegmentWidthsByContent=YES;//    设置和获取当前选中的标签索引//    index 超出范围,不设置,不报错    _segmentedcontrol.selectedSegmentIndex=2;    NSInteger  index=_segmentedcontrol.selectedSegmentIndex;    NSLog(@"index=%ld",(long)index);//此时只能输出默认的选中项,在点击事件中可实现点击输出。//  渲染颜色:注意:这个风格颜色会影响标签的文字和图片    _segmentedcontrol.tintColor=[UIColor greenColor];    [self addSubview:_segmentedcontrol];
//    插入文字标签在index位置://    参数animated 是否是动画模式, 位置index ,放到指定位置,相对于上一个来说。并不是放上之后在第几个位置,    [_segmentedcontrol insertSegmentWithTitle:@"马上" atIndex:0 animated:YES];//插入图片标签在index位置    [_segmentedcontrol insertSegmentWithImage:[[UIImage imageNamed:@"cat"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ] atIndex:3 animated:YES];    /*    typedef NS_ENUM(NSInteger, UIImageRenderingMode) {        UIImageRenderingModeAutomatic,          // Use the default rendering mode for the context where the image is used        UIImageRenderingModeAlwaysOriginal,     // Always draw the original image, without treating it as a template, 总是把原始图像,没有把它作为一个模板        UIImageRenderingModeAlwaysTemplate,     // Always draw the image as a template image, ignoring its color information,总是把图像作为模板图像,忽视它的颜色信息    } NS_ENUM_AVAILABLE_IOS(7_0);*///    根据索引删除某个标签,坐标超过范围,不删除。    [_segmentedcontrol removeSegmentAtIndex:2 animated:YES];//    全部删除     [_segmentedcontrol removeAllSegments];//    根据下标重设标签标题下标超出范围,崩溃    [_segmentedcontrol  setTitle:@"在路上" forSegmentAtIndex:2];,,//    根据下标获得标题,下标超出范围,崩溃    NSString * title=[_segmentedcontrol titleForSegmentAtIndex:1];    NSLog(@"%@",title); //    根据下标设置标签图片 :注意:标题的图片只能设置一个    [_segmentedcontrol setImage:[[UIImage imageNamed:@"ear"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forSegmentAtIndex:0];// 获取标签图片    UIImage * image=[_segmentedcontrol imageForSegmentAtIndex:0];    NSLog(@"%@",image);//  根据索引设置相应标签宽度:注意:如果设置为0.0,则为自适应,默认为此设置    [_segmentedcontrol setWidth:30 forSegmentAtIndex:0];    CGFloat windth=[_segmentedcontrol widthForSegmentAtIndex:0];    NSLog(@"%f",windth); //设置标签内容的偏移量 :注意:这个偏移量指的是标签的文字或者图片    CGSize  size=CGSizeMake(200, 100);    [_segmentedcontrol setContentOffset:size  forSegmentAtIndex:1]; //   根据索引设置标签是否有效,(默认有效)NO 为不可选。    [_segmentedcontrol setEnabled:NO forSegmentAtIndex:1]; //   根据索引获取当前标签是否有效    BOOL enabled=[_segmentedcontrol isEnabledForSegmentAtIndex:1];    NSLog(@"%d",enabled);
//    设置特定状态下segment的背景图案    [_segmentedcontrol setBackgroundImage:[UIImage imageNamed:@"img"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];//    对应特定状态下segment的背景图案    UIImage  *image=[_segmentedcontrol backgroundImageForState:UIControlStateNormal barMetrics:UIBarMetricsCompact];    NSLog(@"%@",image);//   设置标签之间分割线的图案    [_segmentedcontrol setDividerImage:[UIImage imageNamed:@"label"] forLeftSegmentState:UIControlStateHighlighted rightSegmentState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];//    对应的取出标签之间分割线的图案    UIImage  *image1=[_segmentedcontrol dividerImageForLeftSegmentState:UIControlStateHighlighted rightSegmentState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];    NSLog(@"%@",image1);//    //    通过Attribute字符串属性字典设置标签标题//    NSDictionary * dictionary=[[NSDictionary alloc]initWithObjectsAndKeys:@"key1",@"value1",@"key2",@"value2",@"key3",@"value3", nil];//    [_segmentedcontrol setTitleTextAttributes:dictionary forState:UIControlStateNormal];

UISegmentedControl 监听事件:

- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view.//    添加监听事件  //  [self.rootView.segmentedcontrol addTarget:self action:@selector(segmentedcontrolAction:) forControlEvents:UIControlEventValueChanged];}-(void)segmentedcontrolAction:(UISegmentedControl *)sender{    NSUInteger  index=sender.selectedSegmentIndex;    switch (index) {        case 0:            NSLog(@"第一个选项被选中");            break;        case 1:            NSLog(@"第二个选项被选中");            break;        case 2:            NSLog(@"第三个选项被选中");            break;        default:            break;    }}
0 0