使用CALayer的mask屬性來設置圖片圓角

直接上代碼:

@property (weak, nonatomic) IBOutlet UIImageView *userHead;
@property (nonatomic,strong) CAShapeLayer * userMaskLayer;

self.userHead.layer.mask = [self userHeaderMask:self.userHead];

  • (CALayer *)userHeaderMask:(UIView *)originalView{
    CALayer * userMask = [CALayer layer];
    userMask.frame = originalView.bounds;

    CGFloat x = originalView.frame.size.width/2;
    CGFloat y = originalView.frame.size.height/2;

    self.userMaskLayer = [CAShapeLayer layer];
    self.userMaskLayer.bounds = originalView.bounds;
    self.userMaskLayer.path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(x, y) radius:50 startAngle:0 endAngle:2*M_PI clockwise:YES].CGPath;
    self.userMaskLayer.position = CGPointMake(50, 50);
    [userMask addSublayer:self.userMaskLayer];

    return userMask;
    }

原理:通過設置UIImageView的layer的mask屬性。

一般我們都是用
self.userHead.layer.cornerRadius = 50;
self.userHead.layer.masksToBounds = YES;
這種方法來設置圖片圓角,這樣是改變了view的layer屬性。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,141評論 5 13
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,551評論 6 30
  • 前言:關于貝塞爾曲線與CAShapeLayer的學習 學習Demo演示: 貝塞爾曲線簡單了解 使用UIBezier...
    麥穗0615閱讀 17,902評論 18 149
  • 轉載:http://www.lxweimin.com/p/32fcadd12108 每個UIView有一個伙伴稱為l...
    F麥子閱讀 6,288評論 0 13
  • Core Animation其實是一個令人誤解的命名。你可能認為它只是用來做動畫的,但實際上它是從一個叫做Laye...
    小貓仔閱讀 3,765評論 1 4