国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

IOS如何使用CAShapeLayer實(shí)現(xiàn)復(fù)雜的View的遮罩效果

2019-10-21 18:55:23
字體:
供稿:網(wǎng)友
這篇文章主要為大家詳細(xì)介紹了IOS如何使用CAShapeLayer實(shí)現(xiàn)復(fù)雜的View的遮罩效果,感興趣的小伙伴們可以參考一下
 

一、案例演示
最近在整理一個(gè)聊天的項(xiàng)目的時(shí)候,發(fā)送圖片的時(shí)候,會(huì)有一個(gè)三角的指向效果,指向這張圖片的發(fā)送者。服務(wù)端返回給我們的圖片只是一張矩形的圖片,我們?nèi)绾伟岩粡埦匦蔚膱D片或者View,加上一層自定義遮罩效果,就是本文要講的內(nèi)容。效果演示如下:第一張是一個(gè)View的遮罩效果,第二張是UIImageView的遮罩效果。

IOS,CAShapeLayer,遮罩

二、實(shí)現(xiàn)機(jī)制
在每一View的layer層中有一個(gè)mask屬性,他就是專門來設(shè)置該View的遮罩效果的。該mask本身也是一個(gè)layer層。我們只需要生成一個(gè)自定義的layer,然后覆蓋在需要遮罩的View上面即可。問題就歸于如何生成入上圖所示的不規(guī)則圖片的Layer。CAShapeLayer可以根據(jù)幾個(gè)點(diǎn)的依次連線,產(chǎn)生一個(gè)閉合空間的layer。如下圖所示:

IOS,CAShapeLayer,遮罩

三、實(shí)現(xiàn)代碼
實(shí)現(xiàn)方式為實(shí)現(xiàn)了CAShapeLayer的ViewMask的Category。

@implementation CAShapeLayer (ViewMask)+ (instancetype)createMaskLayerWithView : (UIView *)view{  CGFloat viewWidth = CGRectGetWidth(view.frame);  CGFloat viewHeight = CGRectGetHeight(view.frame);  CGFloat rightSpace = 10.;  CGFloat topSpace = 15.;  CGPoint point1 = CGPointMake(0, 0);  CGPoint point2 = CGPointMake(viewWidth-rightSpace, 0);  CGPoint point3 = CGPointMake(viewWidth-rightSpace, topSpace);  CGPoint point4 = CGPointMake(viewWidth, topSpace);  CGPoint point5 = CGPointMake(viewWidth-rightSpace, topSpace+10.);  CGPoint point6 = CGPointMake(viewWidth-rightSpace, viewHeight);  CGPoint point7 = CGPointMake(0, viewHeight);  UIBezierPath *path = [UIBezierPath bezierPath];  [path moveToPoint:point1];  [path addLineToPoint:point2];  [path addLineToPoint:point3];  [path addLineToPoint:point4];  [path addLineToPoint:point5];  [path addLineToPoint:point6];  [path addLineToPoint:point7];  [path closePath];  CAShapeLayer *layer = [CAShapeLayer layer];  layer.path = path.CGPath;  return layer;}@end

四、調(diào)用方式

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(40, 50, 80, 100)];view.backgroundColor = [UIColor orangeColor];[self.view addSubview:view];CAShapeLayer *layer = [CAShapeLayer createMaskLayerWithView:view];view.layer.mask = layer;

作者:yixiangboy
地址:http://blog.csdn.net/yixiangboy/article/details/50485250

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)IOS程序設(shè)計(jì)有所幫助。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长汀县| 江安县| 广宗县| 方正县| 翁源县| 临西县| 新竹市| 柘城县| 达日县| 永登县| 同仁县| 浦北县| 扎囊县| 裕民县| 武威市| 海林市| 济阳县| 剑河县| 永靖县| 石棉县| 五河县| 达尔| 确山县| 信阳市| 醴陵市| 新安县| SHOW| 平塘县| 乐亭县| 正安县| 柯坪县| 稷山县| 安国市| 高淳县| 海门市| 黄龙县| 竹北市| 天水市| 浮山县| 日土县| 锦州市|