国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > iOS > 正文

iOS中設(shè)置view圓角化的四種方法示例

2020-07-26 02:41:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

在最近進(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;  // 貝塞爾曲線(xiàn)(創(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ì)武林網(wǎng)的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 苏尼特右旗| 寻甸| 三门峡市| 康乐县| 灌云县| 六盘水市| 华蓥市| 阜新市| 平武县| 麻城市| 四平市| 阳新县| 简阳市| 湖州市| 襄汾县| 龙里县| 合山市| 蓝田县| 施甸县| 苍南县| 会宁县| 阿拉善左旗| 佳木斯市| 布尔津县| 曲水县| 祥云县| 绵阳市| 西乡县| 六安市| 龙口市| 彭州市| 静海县| 定兴县| 女性| 桃园市| 友谊县| 高邮市| 临沂市| 建宁县| 当雄县| 屯留县|