在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;
}
网友评论