永发信息网

ios开发怎么设置view的四个角为圆角

答案:1  悬赏:60  手机版
解决时间 2021-12-02 11:20
ios开发怎么设置view的四个角为圆角
最佳答案
第一种方法:通过设置layer的属性
最简单的一种,但是很影响性能,一般在正常的开发中使用很少.
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
//只需要设置layer层的两个属性
//设置圆角
imageView.layer.cornerRadius = imageView.frame.size.width / 2;
//将多余的部分切掉
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];第二种方法:使用贝塞尔曲线UIBezierPath和Core Graphics框架画出一个圆角
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    imageView.image = [UIImage imageNamed:@"1"];
    //开始对imageView进行画图
    UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, [UIScreen mainScreen].scale);
    //使用贝塞尔曲线画出一个圆形图
    [[UIBezierPath bezierPathWithRoundedRect:imageView.bounds cornerRadius:imageView.frame.size.width] addClip];
    [imageView drawRect:imageView.bounds];

    imageView.image = UIGraphicsGetImageFromCurrentImageContext();
     //结束画图
    UIGraphicsEndImageContext();
    [self.view addSubview:imageView];第三种方法:使用CAShapeLayer和UIBezierPath设置圆角

首先需要导入

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.image = [UIImage imageNamed:@"1"];
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:imageView.bounds.size];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc]init];
//设置大小
maskLayer.frame = imageView.bounds;
//设置图形样子
maskLayer.path = maskPath.CGPath;
imageView.layer.mask = maskLayer;
[self.view addSubview:imageView];
}

这三种方法中第三种最好,对内存的消耗最少啊,而且渲染快速
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
上虹中学好不好
概率论:如图,为什么1/6e^-x/2e^z-x
3d3s 10.1建模中为什么总是出现节点间间距小
朱建军的主要经历
从都安坐哪趟车经过安铺
黄山区至石台有多:远
十斤葡萄三斤糖多不多?
这顿外卖托同学叫的,给了他五十元,是不是被
比57多9的数是多少
工人砌墙,最上面没有斜砌,要不要拆掉重新铺
谁有最后的朋友这部剧 麻烦发一下 594008447
下列环境中的金属最容易生锈的是A.干燥的空气
24岁好一个尴尬的年纪啊 一事无成但是年纪一
已知弧长,怎么求圆的半径
oppon1和n1t的电池一样吗
推荐资讯
快看漫画怎么换头像
有大神知道怎么使用python 往ftp服务器上连续
关于MyfreeCams聊天室,高手进~~~~
请教吧友,win10怎么添加引导
比62多56的数是多少
小明在显微镜的视野中看到一个“b”,那么载
如果代数式7/3m+4的值是4,求m的值?
爱投金融是个安全靠谱的吗?
wps文字表格内文字行距怎么设置
档开头的四字成语有哪些
嵊州去江苏淮安的客车
郑州化工原料市场搬到哪了
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?