美文网首页征服iOS
UIView 的圆角可以设置任意一边或者两边三边有圆角

UIView 的圆角可以设置任意一边或者两边三边有圆角

作者: 俊俊吖 | 来源:发表于2017-05-09 20:20 被阅读0次

    今天因为工程里面的view设置的是左上边没有圆角,所以特别写了一个UIiView的分类方法,来实现UIview的某一边带有圆角

    方法如下:
    .h里

    import <UIKit/UIKit.h>

    typedef NS_ENUM(NSInteger,UILayoutCornerRadiusType) {
    UILayoutCornerRadiusTop = 0,
    UILayoutCornerRadiusLeft = 1,
    UILayoutCornerRadiusBottom = 2,
    UILayoutCornerRadiusRight = 3,
    UILayoutCornerRadiusAll = 4,
    UILayoutCornerdeleteTopleft = 5,
    };
    @interface UIView (CornerRadius)
    /**

    • @author
    • 设置不同边的圆角
    • @param sideType 圆角类型
    • @param cornerRadius 圆角半径
      */
      -(void)UILayoutCornerRadiusType:(UILayoutCornerRadiusType)radiusType withCornerRadius:(CGFloat)cornerRadius;
      @end

    .m里

    import "UIView+CornerRadius.h"

    @implementation UIView (CornerRadius)

    • (void)UILayoutCornerRadiusType:(UILayoutCornerRadiusType)sideType withCornerRadius:(CGFloat)cornerRadius
      {

      CGSize cornerSize = CGSizeMake(cornerRadius, cornerRadius);
      UIBezierPath *maskPath;

      switch (sideType) {
      case UILayoutCornerRadiusTop:
      {
      maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
      byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)
      cornerRadii:cornerSize];
      }
      break;
      case UILayoutCornerRadiusLeft:
      {
      maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
      byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerBottomLeft)
      cornerRadii:cornerSize];
      }
      break;
      case UILayoutCornerRadiusBottom:
      {
      maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
      byRoundingCorners:(UIRectCornerBottomLeft|UIRectCornerBottomRight)
      cornerRadii:cornerSize];
      }
      break;
      case UILayoutCornerRadiusRight:
      {
      maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
      byRoundingCorners:(UIRectCornerTopRight|UIRectCornerBottomRight)
      cornerRadii:cornerSize];
      }
      break;
      case UILayoutCornerdeleteTopleft:
      {
      maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
      byRoundingCorners:(UIRectCornerTopRight|UIRectCornerBottomRight|UIRectCornerBottomLeft)
      cornerRadii:cornerSize];
      }
      break;
      default:
      {
      maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
      byRoundingCorners:UIRectCornerAllCorners
      cornerRadii:cornerSize];
      }
      break;
      }

      // Create the shape layer and set its path
      CAShapeLayer *maskLayer = [CAShapeLayer layer];
      maskLayer.frame = self.bounds;
      maskLayer.path = maskPath.CGPath;

      // Set the newly created shape layer as the mask for the image view's layer
      self.layer.mask = maskLayer;

      [self.layer setMasksToBounds:YES];
      }
      @end

    //调用

    • (void)viewDidLoad {
      [super viewDidLoad];

      UIView *whiteView =[[UIView alloc]init];
      whiteView.backgroundColor = [UIColor whiteColor];
      whiteView.frame = CGRectMake(30, 300, 200, 200);
      [whiteView UILayoutCornerRadiusType:5 withCornerRadius:3];
      [self.view addSubview:whiteView];
      }
      此处声明一下:可以修改代码,让其中三边有圆角,只需要添加类型然再在Case里添加 其实主要是添加 UIRectCornerTopRight|UIRectCornerBottomRight|UIRectCornerBottomLeft这里面的类型

    相关文章

      网友评论

        本文标题:UIView 的圆角可以设置任意一边或者两边三边有圆角

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