最简单的一种,但是很影响性能。
情景一:使用代码设置 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]; 情景二:在xib中设置 1、利用KVC设置(Key Path),下图 2、利用 IBInspectable设置,下图 实现:项目中添加了一个UIView的分类,代码如下
//
// UIView+BorderRadius.h
// DaZhongChuXing
//
// Created by fujunzhi on 2017/3/10.
// Copyright © 2017年 tony. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIView (BorderRadius)
//加上IBInspectable就可以可视化显示相关的属性哦
@property (nonatomic, strong) IBInspectable UIColor *borderColor;
@property (nonatomic, assign) IBInspectable CGFloat borderWidth;
@property (nonatomic, assign) IBInspectable CGFloat cornerRadius;
@end
//
// UIView+BorderRadius.m
// DaZhongChuXing
//
// Created by fujunzhi on 2017/3/10.
// Copyright © 2017年 tony. All rights reserved.
//
#import "UIView+BorderRadius.h"
@implementation UIView (BorderRadius)
- (void)setBorderColor:(UIColor *)borderColor {
self.layer.borderColor = borderColor.CGColor;
}
- (UIColor *)borderColor {
return [UIColor colorWithCGColor:self.layer.borderColor];
}
- (void)setBorderWidth:(CGFloat)borderWidth
{
self.layer.borderWidth = borderWidth;
}
- (CGFloat)borderWidth
{
return self.layer.borderWidth;
}
- (void)setCornerRadius:(CGFloat)cornerRadius
{
self.layer.cornerRadius = cornerRadius;
self.layer.masksToBounds = cornerRadius > 0;
}
- (CGFloat)cornerRadius
{
return self.layer.cornerRadius;
}
@end
IB_DESIGNABLE/IBInspectable的使用
首先需要导入<AVFoundation/AVFoundation.h>
#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]; } 推荐的文章: