【iOS】中间透明的引导蒙层

需求

如图口袋蜜蜂app一键海报的新手指引图,需求是遮罩层中间透明的,把底层的第一张海报显示出来,如图:
这里写图片描述

实现

通过UIBezierPath和CAShapeLayer绘制一张中间为透明的黑色半透明遮罩层。

步奏1、新建类PCOnePosterGuide继承自UIView
步奏2、重写drawRect:方法:

- (void)drawRect:(CGRect)rect {
  [super drawRect:rect];

  //整个view(如下图,蓝色部分)
  UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:0];

  //中间空的部分(如下图:粉红色部分)
  UIBezierPath *maskPath;
  CGFloat maskW = (IOS_VERSION>=10.)?64.:50.;
  CGFloat padding = (SCREEN_WIDTH>375)?6.:2.;
  maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(SCREEN_WIDTH-maskW-padding, PCSTATUSBAR_HEIGHT+4, maskW, 36.)
                                   byRoundingCorners:UIRectCornerAllCorners
                                         cornerRadii:CGSizeMake(2, 2)];
  [path appendPath:maskPath];
  //使用奇偶性原则,设置填充部分为除去粉色的蓝色部分
  [path setUsesEvenOddFillRule:YES];

  CAShapeLayer *fillLayer = [CAShapeLayer layer];
  fillLayer.path = path.CGPath;
  fillLayer.fillRule = kCAFillRuleEvenOdd;
  fillLayer.fillColor = [UIColor blackColor].CGColor;
  fillLayer.opacity = 0.5;
  [self.layer addSublayer:fillLayer];  
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值