iOS-視圖UIBezierPath切部分圓角

日常開發(fā)中,可能某些需求需要我們對當(dāng)前視圖進行部分圓角切割,那,我們怎么去處理呢?

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.tipLabel.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(5, 5)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];

maskLayer.frame = self.tipLabel.bounds;

maskLayer.path = maskPath.CGPath;

self.tipLabel.layer.mask = maskLayer;

UIRectCorner有五種
UIRectCornerTopLeft // 上左
UIRectCornerTopRight // 上右
UIRectCornerBottomLeft // 下左
UIRectCornerBottomRight // 下右
UIRectCornerAllCorners // 全部

當(dāng)然我們的項目中相應(yīng)的封裝了相關(guān)的方法

/// 設(shè)置圓角
/// @param bounds       view 的 frame
/// @param cornerRadii  圓角半徑 例如:CGSizeMake(15, 15)
/// @param rectCorner   圓角的方向 例如:UIRectCornerTopLeft | UIRectCornerTopRight
- (void)yx_generateCorners:(CGRect)bounds cornerRadii:(CGSize)cornerRadii rectCorner:(UIRectCorner)rectCorner;
- (void)yx_generateCorners:(CGRect)bounds cornerRadii:(CGSize)cornerRadii rectCorner:(UIRectCorner)rectCorner {
    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:bounds
                                               byRoundingCorners:rectCorner
                                                     cornerRadii:cornerRadii];
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    shapeLayer.frame = bounds;
    shapeLayer.path = path.CGPath;
    self.layer.mask = shapeLayer;
}

相關(guān)使用

[self.shareLabel yx_generateCorners:CGRectMake(0, 0, UI_SCREEN_WIDTH, 50) cornerRadii:CGSizeMake(8, 8) rectCorner:UIRectCornerTopLeft | UIRectCornerTopRight];

注意:使用masonry布局時候,視圖的bounds是獲取不到的,要標(biāo)注好相關(guān)的CGRectMake
相關(guān)學(xué)習(xí)文章UIBezierPath介紹

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容