iOS——UISegmentedControl 的用法

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值