UISegmentedControl详解

这个空间用的不是很多,但是用到你就需要研究一下.

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];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值