IOS如何使用CAShapeLayer實現複雜的View的遮罩效果_IOS

來源:互聯網
上載者:User

一、案例示範
最近在整理一個聊天的項目的時候,發送圖片的時候,會有一個三角的指向效果,指向這張圖片的寄件者。服務端返回給我們的圖片只是一張矩形的圖片,我們如何把一張矩形的圖片或者View,加上一層自訂遮罩效果,就是本文要講的內容。效果示範如下:第一張是一個View的遮罩效果,第二張是UIImageView的遮罩效果。

二、實現機制
在每一View的layer層中有一個mask屬性,他就是專門來設定該View的遮罩效果的。該mask本身也是一個layer層。我們只需要產生一個自訂的layer,然後覆蓋在需要遮罩的View上面即可。問題就歸於如何產生入上圖所示的不規則圖片的Layer。CAShapeLayer可以根據幾個點的依次連線,產生一個閉合空間的layer。如下圖所示:

三、實現代碼
實現方式為實現了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

四、調用方式

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

以上就是本文的全部內容,希望對大家學習IOS程式設計有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.