在开发中为UIView设置边框是常常用到的功能,如果要为UIView四下都设置边框,最简单的方法是使用CALayer的border属性:
+(void)setViewBorder:(UIView *)view color:(UIColor *)color radius:(float)radius border:(float)border{
//设置layer
CALayer *layer=[view layer];
//是否设置边框以及是否可见
[layer setMasksToBounds:YES];
//设置边框圆角的弧度
[layer setCornerRadius:radius];
//设置边框线的宽
[layer setBorderWidth:border];
//设置边框线的颜色
[layer setBorderColor:[color CGColor]];
}
但是在实际中往往需要灵活的设置某几条或者某一条边框,那么该怎么做呢?下面就是提供的方法:
typedef NS_ENUM(NSInteger, UIViewBorderLineType) {
UIViewBorderLineTypeTop,
UIViewBorderLineTypeRight,
UIViewBorderLineTypeBottom,
UIViewBorderLineTypeLeft,
};
+(void)setViewBorder:(UIView *)view color:(UIColor *)color border:(float)border type:(UIViewBorderLineType)borderLineType{
CALayer *lineLayer = [CALayer layer];
lineLayer.backgroundColor = color.CGColor;
switch (borderLineType) {
case UIViewBorderLineTypeTop:{
lineLayer.frame = CGRectMake(0, 0, view.frame.size.width, border);
break;
}
case UIViewBorderLineTypeRight:{
lineLayer.frame = CGRectMake(view.frame.size.width, 0, border, view.frame.size.height);
break;
}
case UIViewBorderLineTypeBottom:{
lineLayer.frame = CGRectMake(0, view.frame.size.height, view.frame.size.width,border);
break;
}
case UIViewBorderLineTypeLeft:{
lineLayer.frame = CGRectMake(0, 0, border, view.frame.size.height);
break;
}
default:{
lineLayer.frame = CGRectMake(0, 0, view.frame.size.width-42, border);
break;
}
}
[view.layer addSublayer:lineLayer];
}
本质上也是实用UIView的layer,然后为其添加子layer。