国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 湘潭县| 佛冈县| 合肥市| 疏附县| 甘肃省| 永安市| 建始县| 杭锦后旗| 商丘市| 于田县| 赞皇县| 保定市| 砚山县| 周口市| 开化县| 阆中市| 双桥区| 河南省| 吉水县| 乌鲁木齐市| 宁明县| 易门县| 霍林郭勒市| 武宁县| 陇南市| 绍兴县| 荥经县| 谷城县| 富裕县| 平果县| 静宁县| 繁昌县| 金沙县| 临沭县| 锦州市| 大荔县| 酒泉市| 固原市| 秦皇岛市| 石门县| 那曲县|