iOS中設(shè)置view圓角化的四種方法示例
前言
在最近進(jìn)行項(xiàng)目性能優(yōu)化的過(guò)程中,遇到view圓角優(yōu)化的問(wèn)題,有一些粗略的看法,現(xiàn)總結(jié)一下。分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
設(shè)置圓角目前知道的有四種方法:
1、通過(guò)shapeLayer設(shè)置
2、通過(guò)view的layer設(shè)置
3、通過(guò)BezierPath設(shè)置
4、通過(guò)貼圖的方式設(shè)置
1、shapeLayer的實(shí)現(xiàn)
通過(guò)bezizerpath設(shè)置一個(gè)路徑,加到目標(biāo)視圖的layer上。代碼如下:
// 創(chuàng)建一個(gè)view
UIView *showView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[self.view addSubview:showView];
showView.backgroundColor = [UIColor whiteColor];
showView.alpha = 0.5;
// 貝塞爾曲線(創(chuàng)建一個(gè)圓)
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100 / 2.f, 100 / 2.f)
radius:100 / 2.f
startAngle:0
endAngle:M_PI * 2
clockwise:YES];
CAShapeLayer *layer = [CAShapeLayer layer];
layer.frame = showView.bounds;
layer.path = path.CGPath;
[showView.layer addSublayer:layer];
2、view的layer的實(shí)現(xiàn)
通過(guò)view的layer直接設(shè)置的方式,是所有的方法中最簡(jiǎn)單的,代碼如下:
- (UIImageView *)avatarImage {
if (!_avatarImage) {
_avatarImage = [[UIImageView alloc] initWithFrame:CGRectMake(20,10, avatarDiameter, avatarDiameter)];
_avatarImage.backgroundColor = [UIColor grayColor];
_avatarImage.contentMode = UIViewContentModeScaleAspectFit;
_avatarImage.layer.cornerRadius = avatarDiameter/2.0;
_avatarImage.layer.masksToBounds = YES;
[_avatarImage setImage:[UIImage imageNamed:@"test.jpg"]];
}
return _avatarImage;
}
3、BezierPath的實(shí)現(xiàn)
BezierPath的實(shí)現(xiàn)方式繼承UIView,自己實(shí)現(xiàn)一個(gè)customview,代碼如下。
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
}
return self;
}
- (void)drawRect:(CGRect)rect {
// Drawing code
CGRect bounds = self.bounds;
[[UIColor whiteColor] set];
UIRectFill(bounds);
[[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:CGRectGetWidth(bounds)/2.0] addClip];
[self.image drawInRect:bounds];
}
4、貼圖的實(shí)現(xiàn)
貼圖的方式是使用一個(gè)中間是圓形鏤空的圖覆蓋在需要圓角化的圖片的上方。代碼如下:
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self.contentView addSubview:self.avatarImage];
[self.contentView addSubview:self.maskImage];
}
return self;
}
- (UIImageView *)avatarImage {
if (!_avatarImage) {
_avatarImage = [[UIImageView alloc] initWithFrame:CGRectMake(20,10, avatarDiameter, avatarDiameter)];
_avatarImage.backgroundColor = [UIColor grayColor];
_avatarImage.contentMode = UIViewContentModeScaleAspectFit;
[_avatarImage setImage:[UIImage imageNamed:@"test.jpg"]];
}
return _avatarImage;
}
//中心鏤空的圖
- (UIImageView *)maskImage {
if (!_maskImage) {
_maskImage = [[UIImageView alloc] initWithFrame:CGRectMake(20,10, avatarDiameter, avatarDiameter)];
_maskImage.contentMode = UIViewContentModeScaleAspectFit;
[_maskImage setImage:[UIImage imageNamed:@"corner_circle.png"]];
}
return _maskImage;
}
如果大家有什么好的方法,希望推薦給我。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
iOS開(kāi)發(fā)中常見(jiàn)的項(xiàng)目文件與MVC結(jié)構(gòu)優(yōu)化思路解析
這篇文章主要介紹了iOS開(kāi)發(fā)中常見(jiàn)的項(xiàng)目文件與MVC結(jié)構(gòu)優(yōu)化思路解析,示例代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12
ios實(shí)現(xiàn)tableView頂部彈簧圖片效果
這篇文章主要為大家詳細(xì)介紹了ios實(shí)現(xiàn)tableView頂部彈簧圖片效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
iOS如何保持程序在后臺(tái)長(zhǎng)時(shí)間運(yùn)行
這篇文章主要為大家詳細(xì)介紹了iOS如何保持程序在后臺(tái)長(zhǎng)時(shí)間運(yùn)行,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
iOS實(shí)現(xiàn)微信/QQ顯示最近拍攝圖片的功能實(shí)例代碼
如果你剛剛拍攝了圖片,在使用微信/QQ發(fā)生消息時(shí)會(huì)顯示“你可能要發(fā)送的圖片”,這個(gè)功能非常人性化,怎么實(shí)現(xiàn)的呢?下面小編給大家分享iOS實(shí)現(xiàn)微信/QQ顯示最近拍攝圖片的功能實(shí)例代碼,一起看看吧2017-03-03
iOS ScrollView嵌套tableView聯(lián)動(dòng)滾動(dòng)的思路與最佳實(shí)踐
這篇文章主要給大家介紹了關(guān)于ScrollView嵌套tableView聯(lián)動(dòng)滾動(dòng)的思路與最佳實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
iOS簡(jiǎn)單到無(wú)門(mén)檻調(diào)試WebView的步驟詳解
這篇文章主要給大家介紹了關(guān)于iOS調(diào)試WebView的相關(guān)資料,文中介紹的方法可以說(shuō)是非常簡(jiǎn)單,簡(jiǎn)單到無(wú)門(mén)檻,通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
iOS中l(wèi)ebel特殊字符的自動(dòng)換行問(wèn)題解決
這篇文章主要給大家介紹了關(guān)于iOS中l(wèi)ebel特殊字符的實(shí)現(xiàn)不自動(dòng)換行的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)iOS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10

