iOS開(kāi)發(fā)方形圖形切特定位置圓角

背景:iOS開(kāi)發(fā)中會(huì)經(jīng)常要求切圓角,常規(guī)圓角好切,但如果要求切特定位置圓角,比如左邊正常方角,右邊上下圓角。這樣的情況就會(huì)麻煩一點(diǎn)。


左邊正常方角,右邊上下圓角.png

傳統(tǒng)方法

利用貝塞爾曲線

// 創(chuàng)建一個(gè)帶有橢圓形圓角的路徑    
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:roundedView.bounds byRoundingCorners: UIRectCornerTopRight | UIRectCornerBottomRight cornerRadii:CGSizeMake(10, 10)];  
// 創(chuàng)建一個(gè)形狀圖層
CAShapeLayer *shapeLayer = [CAShapeLayer layer];    
shapeLayer.path = path.CGPath;
// 將形狀圖層設(shè)置為視圖的遮罩    
yourView.layer.mask = shapeLayer;

//其中UIRectCornerAllCorners的枚舉值有以下,你可以根據(jù)自己的需要對(duì)特定的圓角裁切
typedef NS_OPTIONS(NSUInteger, UIRectCorner) {
    UIRectCornerTopLeft     = 1 << 0,
    UIRectCornerTopRight    = 1 << 1,
    UIRectCornerBottomLeft  = 1 << 2,
    UIRectCornerBottomRight = 1 << 3,
    UIRectCornerAllCorners  = ~0UL
};

該方法賦值的yourView必須給定frame,如果你是用Masonry庫(kù)來(lái)給yourView添加約束,則需要先執(zhí)行l(wèi)ayoutIfNeeded方法后再賦值貝塞爾曲線遮罩,否則圓角會(huì)因?yàn)閒ram為0而不生效。

[yourView layoutIfNeeded];

快速方法

一句話代碼

yourView.layer.maskedCorners = kCALayerMaxXMinYCorner | kCALayerMaxXMaxYCorner;

添加到view.layer.cornerRadius = xxx;的后面,即可快速指定需要切那個(gè)圓角。并且支持Masonry庫(kù),無(wú)需指定frame。

完整代碼如下:

UIView *view = [[UIView alloc] init];   
view.backgroundColor = [UIColor redColor];    
view.layer.cornerRadius = 100;
view.layer.maskedCorners = kCALayerMaxXMinYCorner | kCALayerMaxXMaxYCorner;
[self.view addSubview:view];
[view mas_makeConstraints:^(MASConstraintMaker *make) {   
    make.size.mas_equalTo(CGSizeMake(200, 200));        
    make.center.mas_equalTo(self.view); 
}];

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

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

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