星空网 > 软件开发 > 操作系统

用UIBezierPath数组对UIView进行镂空处理

用UIBezierPath数组对UIView进行镂空处理

用UIBezierPath数组对UIView进行镂空处理images/loading.gif' data-original="http://images2015.cnblogs.com/blog/607542/201607/607542-20160708225908499-1309253874.gif" />

 

效果

用UIBezierPath数组对UIView进行镂空处理用UIBezierPath数组对UIView进行镂空处理用UIBezierPath数组对UIView进行镂空处理

 

源码

//// CutOutClearView.h// CutOutMaskView//// Created by YouXianMing on 16/7/8.// Copyright © 2016年 YouXianMing. All rights reserved.//#import <UIKit/UIKit.h>@interface CutOutClearView : UIView@property (nonatomic, strong) UIColor *fillColor;@property (nonatomic, strong) NSArray <UIBezierPath *> *paths;@end

//// CutOutClearView.m// CutOutMaskView//// Created by YouXianMing on 16/7/8.// Copyright © 2016年 YouXianMing. All rights reserved.//#import "CutOutClearView.h"@implementation CutOutClearView- (instancetype)initWithFrame:(CGRect)frame {    if (self = [super initWithFrame:frame]) {      self.fillColor    = [UIColor whiteColor];    self.backgroundColor = [UIColor clearColor];    self.opaque     = NO;  }    return self;}- (void)drawRect:(CGRect)rect {  [super drawRect:rect];    [self.fillColor setFill];  UIRectFill(rect);    CGContextRef context = UIGraphicsGetCurrentContext();    for (UIBezierPath *path in self.paths) {        CGContextAddPath(context, path.CGPath);    CGContextSetBlendMode(context, kCGBlendModeClear);    CGContextFillPath(context);  }}@end

//// ViewController.m// CutOutClearView//// Created by YouXianMing on 16/7/8.// Copyright © 2016年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "CutOutClearView.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];  imageView.image    = [UIImage imageNamed:@"bg.png"];  imageView.contentMode = UIViewContentModeScaleAspectFill;  [self.view addSubview:imageView];    NSMutableArray *paths = [NSMutableArray array];    {    UIBezierPath* bezierPath = [UIBezierPath bezierPath];    [bezierPath moveToPoint: CGPointMake(57.04, 31.19)];    [bezierPath addLineToPoint: CGPointMake(125.55, 12.5)];    [bezierPath addLineToPoint: CGPointMake(185.5, 91)];    [bezierPath addLineToPoint: CGPointMake(57.04, 169.5)];    [bezierPath addLineToPoint: CGPointMake(18.5, 91)];    [bezierPath addLineToPoint: CGPointMake(57.04, 31.19)];    [bezierPath closePath];    [paths addObject:bezierPath];  }    {    UIBezierPath* bezierPath = [UIBezierPath bezierPath];    [bezierPath moveToPoint: CGPointMake(46.5, 245.5)];    [bezierPath addLineToPoint: CGPointMake(137.5, 272.5)];    [bezierPath addLineToPoint: CGPointMake(137.5, 211.5)];    [bezierPath addLineToPoint: CGPointMake(90.5, 196.5)];    [bezierPath addLineToPoint: CGPointMake(46.5, 211.5)];    [bezierPath addLineToPoint: CGPointMake(46.5, 245.5)];    [bezierPath closePath];    [paths addObject:bezierPath];  }    CutOutClearView *cutOutView = [[CutOutClearView alloc] initWithFrame:self.view.bounds];  cutOutView.fillColor    = [UIColor redColor];  cutOutView.paths      = paths;//  [self.view addSubview:cutOutView];  imageView.maskView = cutOutView;}@end

 

细节

用UIBezierPath数组对UIView进行镂空处理

 




原标题:用UIBezierPath数组对UIView进行镂空处理

关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流