iOS 13 UISegmentedControl 适配

2019-12-17  本文已影响0人  火星村村长

写个UISegmentedControl 的分类,调用ensureiOS12Style

@interface UISegmentedControl(Common)

-(void)ensureiOS12Style;

@end

@implementation UISegmentedControl(Common)

-(void)ensureiOS12Style{

// UISegmentedControl has changed in iOS 13 and setting the tint color now has no effect.

if(@available(iOS13,*)){

[self setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: [UIFont boldSystemFontOfSize:14.0f]} forState:UIControlStateSelected];

UIColor*tintColor=[self tintColor];UIImage*tintColorImage=[self imageWithColor:tintColor];

// Must set the background image for normal to something (even clear) else the rest won't work

[self setBackgroundImage:[self imageWithColor:self.backgroundColor?self.backgroundColor:[UIColor clearColor]]forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

[self setBackgroundImage:tintColorImage forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];

[self setBackgroundImage:[self imageWithColor:[tintColor colorWithAlphaComponent:0.2]]forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];

[self setBackgroundImage:tintColorImage forState:UIControlStateSelected|UIControlStateSelected barMetrics:UIBarMetricsDefault];

[self setTitleTextAttributes:@{NSForegroundColorAttributeName:tintColor,NSFontAttributeName:[UIFont systemFontOfSize:13]}forState:UIControlStateNormal];

[self setDividerImage:tintColorImage forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

self.layer.borderWidth=1;self.layer.borderColor=[tintColor CGColor];}}-(UIImage*)imageWithColor:(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*theImage=UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

returntheImage;

}

@end

上一篇下一篇

猜你喜欢

热点阅读