国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 高清| 扬州市| 静海县| 托里县| 江陵县| 柘城县| 阳原县| 泗洪县| 邹城市| 洛扎县| 公主岭市| 新蔡县| 治多县| 安平县| 沙田区| 许昌市| 高青县| 鸡泽县| 革吉县| 湘潭市| 正宁县| 林甸县| 金塔县| 前郭尔| 莲花县| 汤阴县| 西充县| 伽师县| 白朗县| 海南省| 南京市| 东兴市| 舞阳县| 和硕县| 东至县| 南川市| 蓝田县| 潮州市| 井研县| 蓝田县| 广水市|