美文网首页
UISegmentedControl 的自定义样式

UISegmentedControl 的自定义样式

作者: 小小的叶子随枫飘落 | 来源:发表于2016-12-02 22:01 被阅读1415次

在iOS开发中会经常使用UISegmentedControl,类似于以下图片的分段控制器,我也只能按照设计图来实现了。


749BC2B7-7720-48E5-A090-B9BEDF63B430.png

1.初始化方法

UISegmentedControl *segment = [[UISegmentedControl alloc] initWithItems:@[@"消息",@"系统消息"]];

2.未选中状态下的标题和背景图片

[segment setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}
                       forState:UIControlStateNormal];
[segment setBackgroundImage:[UIImage imageWithBgColor:[UIColor colorWithHex:0x208854]]
                   forState:UIControlStateNormal
                 barMetrics:UIBarMetricsDefault];

3.选中状态下的标题和背景图片

[segment setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor lightGrayColor]}
                       forState:UIControlStateSelected];
[segment setBackgroundImage:[UIImage imageWithBgColor:[UIColor whiteColor]]
                   forState:UIControlStateSelected
                 barMetrics:UIBarMetricsDefault];

4.设置frame和切圆角

segment.frame=ccr(0, 0, 200, 30);
segment.layer.cornerRadius = 5;
segment.layer.masksToBounds = YES;
segment.selectedSegmentIndex = 0;

5.大体已经完成了,后来发现点击切换segment的时候总是有一个黑色的背景色出现,那是因为还少个高亮状态的背景颜色在作怪

 [segment setBackgroundImage:[UIImage imageWithBgColor:[UIColor colorWithHex:0x208854]]
                    forState:UIControlStateHighlighted
                  barMetrics:UIBarMetricsDefault];
  • imageWithBgColor 这写的的UIImage的一个类别,设置一个颜色当背景图片的。
 + (UIImage *)imageWithBgColor:(UIColor *)color {
    
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    
    UIGraphicsBeginImageContext(rect.size);
    
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    CGContextSetFillColorWithColor(context, [color CGColor]);
    
    CGContextFillRect(context, rect);
    
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return image;
}

相关文章

网友评论

      本文标题:UISegmentedControl 的自定义样式

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