1、在iOS13中 毁渗,UISegmentedControl默認(rèn)樣式變?yōu)榘椎缀谧郑?/p>
實(shí)現(xiàn)延展 ,調(diào)用 segmentedIOS13Style方法
1、.h文件
@interface UISegmentedControl (Category)
- (void)segmentedIOS13Style;
@end
2倒信、.m文件
#import "UISegmentedControl+Category.h"
@implementation UISegmentedControl (Category)
- (void)segmentedIOS13Style {
? ? if (@available(iOS 13, *)) {
? ? ? ? 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];
? ? ? ? self.selectedSegmentTintColor = tintColor;
? ? }
}
- (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();
? ? return theImage;
}
@end