第一种方法:通过设置layer的属性(同时使用cornerRadius,masksToBounds会造成离屏渲染)
最简单的一种,但是很影响性能,一般在正常的开发中使用很少.
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
//只需要设置layer层的两个属性
//设置圆角
imageView.layer.cornerRadius = imageView.frame.size.width /
//将多余的部分切掉
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];
第二种方法:使用CAShapeLayer和UIBezierPath设置圆角(性能相对好)封装 扩展一个 view
#import <UIKit/UIKit.h>
@interface UIView (PCFrame)
/**
- 设置圆角
cornerRadii:圆角大小
corner:那个方向设置圆角
**/
- (void)setCornerWithCornerRadii:(CGSize)cornerRadii byRoundingCorners:(UIRectCorner)corner;
@end
#import “UIView+PCFrame.h”
@implementation UIView (PCFrame)
-
(void)setCornerWithCornerRadii:(CGSize)cornerRadii byRoundingCorners:(UIRectCorner)corner{
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
byRoundingCorners:corner
cornerRadii:cornerRadii];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.bounds;
maskLayer.path = maskPath.CGPath;self.layer.mask = maskLayer;
}
@end
本文介绍两种在iOS中创建圆角视图的方法。第一种是通过直接设置UIView的layer属性,包括cornerRadius和masksToBounds,但这种方法可能影响性能。第二种方法利用CAShapeLayer和UIBezierPath,提供更好的性能,适用于实际开发中。文章提供了具体的Swift代码示例。
361

被折叠的 条评论
为什么被折叠?



