美文网首页
iOS 13 UISegmentController 适配

iOS 13 UISegmentController 适配

作者: 喜欢吃生蚝 | 来源:发表于2021-07-08 09:53 被阅读0次

    iOS 13

    image.png

    iOS 13 以前

    image.png
    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: [UIColor whiteColor], NSFontAttributeName: [UIFont systemFontOfSize:13]} forState:UIControlStateNormal];
    
            [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
    

    相关文章

      网友评论

          本文标题:iOS 13 UISegmentController 适配

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