美文网首页
UISegmentedControl 去边框、去竖线、圆角、字体

UISegmentedControl 去边框、去竖线、圆角、字体

作者: 宇文袥 | 来源:发表于2019-05-07 17:37 被阅读0次

    话不多说,直接上代码

    设置字体大小和颜色

    //使用文本属性
    UIFont *font = [UIFont fontWithName:fontName_bold size:18];
    UIColor *textColor = [UIColor whiteColor];
    NSDictionary *attributesDict = @{
                                         NSFontAttributeName:font,
                                         NSForegroundColorAttributeName:textColor
                                         };//还可以添加其他属性
    //未选中状态
    [segment setTitleTextAttributes:attributesDict
                                   forState:UIControlStateNormal];
     //选中状态
     [segment setTitleTextAttributes:attributesDict
                               forState:UIControlStateSelected];
    

    去边框(过期代码)

    //    1.去掉整个segment颜色,现在整个segment都看不见
      self.segment.tintColor = [UIColor clearColor];
    //设置文字属性其,把两个button的文字显示出来
        NSDictionary* selectedTextAttributes = @{NSFontAttributeName:[UIFont boldSystemFontOfSize:14],NSForegroundColorAttributeName: [UIColor whiteColor]};
        [ self.segment setTitleTextAttributes:selectedTextAttributes forState:UIControlStateSelected];
        NSDictionary* unselectedTextAttributes = @{NSFontAttributeName:[UIFont boldSystemFontOfSize:14],NSForegroundColorAttributeName: [UIColor lightTextColor]};
        [self.segment setTitleTextAttributes:unselectedTextAttributes forState:UIControlStateNormal];
    

    去边框(正确姿势)

    //通过设置背景图片达到目的
     [segment setBackgroundImage:[UIImage imageWithColor:[UIColor clearColor]]
                           forState:UIControlStateNormal
                         barMetrics:UIBarMetricsDefault];
      [segment setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]]
                           forState:UIControlStateSelected
                         barMetrics:UIBarMetricsDefault];
    //这个方法是高亮状态的背景图,就是点击其他后闪那一下
    //[segment setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]]
    //                       forState:UIControlStateHighlighted
    //                     barMetrics:UIBarMetricsDefault];
    

    设置圆角、边框

    //网上方法很多,我这个前提是去掉了边框
     segment.layer.cornerRadius = 10;
     segment.layer.masksToBounds = YES;
     segment.layer.borderWidth = 1;
     segment.layer.borderColor = [UIColor redColor].CGColor;
    

    去除竖线

    //也是通过设置图片达到目的
     [segment setDividerImage:[UIImage imageWithColor:[UIColor clearColor]] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    

    根据颜色颜色生成图片(Category)

    + (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;
       
    }
    

    毛玻璃效果(苹果自带的API,有兴趣可以去了解)

    UIVisualEffectView *effectview = [[UIVisualEffectView alloc] initWithEffect:blur];
        effectview.backgroundColor = [UIColor whiteColor];
        effectview.frame = segment.bounds;
        effectview.alpha = 0.1;
        [segment addSubview:effectview];
    

    综合效果

    ![效果图][ image.png

    ]

    相关文章

      网友评论

          本文标题:UISegmentedControl 去边框、去竖线、圆角、字体

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