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

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

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

2019-10-21 18:44:44
字體:
供稿:網(wǎng)友

前言

在最近進(jìn)行項(xiàng)目性能優(yōu)化的過程中,遇到view圓角優(yōu)化的問題,有一些粗略的看法,現(xiàn)總結(jié)一下。分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。

設(shè)置圓角目前知道的有四種方法:

     1、通過shapeLayer設(shè)置

     2、通過view的layer設(shè)置

     3、通過BezierPath設(shè)置

     4、通過貼圖的方式設(shè)置

1、shapeLayer的實(shí)現(xiàn)

通過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)

通過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à)值,如果有疑問大家可以留言交流,謝謝大家對(duì)VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到IOS開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汶上县| 盱眙县| 阜平县| 河源市| 邵阳县| 涿鹿县| 子洲县| 隆德县| 青州市| 阳信县| 西乌珠穆沁旗| 湘阴县| 崇左市| 满洲里市| 郯城县| 达尔| 历史| 夹江县| 南汇区| 通江县| 宜城市| 二连浩特市| 济阳县| 五台县| 儋州市| 华池县| 布拖县| 灵丘县| 赤壁市| 文登市| 阜阳市| 虞城县| 平顶山市| 宁津县| 清河县| 彭阳县| 斗六市| 商丘市| 汝阳县| 深水埗区| 临漳县|