YKCornersView
示例
要运行示例项目,首先克隆仓库,然后从示例目录中运行 pod install
。
要求
安装
YKCornersView 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
pod 'YKCornersView'
支持的功能
目前版本支持以下功能:
- 自定义圆角方向
- 自定义边线颜色和宽度
- 自定义内部填充色
使用的技术
UIBezierPath + CAShapeLayer 绘图
使用 UIBezierPath + CAShapeLayer 绘制圆角、边线和填充色,核心代码如下:
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:self._radiusCorner cornerRadii:CGSizeMake(self._radiusFloat, 0)];
self.shapeLayer = [CAShapeLayer layer];
self.shapeLayer.path = maskPath.CGPath;
self.shapeLayer.lineWidth = self._lineWidth;
self.shapeLayer.strokeColor = self._lineColor.CGColor;
self.shapeLayer.fillColor = self._fillColor.CGColor;
self.shapeLayer.frame = self.bounds;
[self.layer addSublayer:self.shapeLayer];
类别添加属性
类别无法直接添加属性,但是使用runtime可以实现,部分代码如下:
- (CGFloat)_radiusFloat {
return [objc_getAssociatedObject(self, &radiusFloatKey) floatValue];
}
- (void)set_radiusFloat:(CGFloat)radiusFloat {
objc_setAssociatedObject(self, &radiusFloatKey, [NSNumber numberWithFloat:radiusFloat], OBJC_ASSOCIATION_COPY);
}
链式方法
需要设置的属性达到5个,一个一个设置要占5行,还是链式的写法,一行搞定比较爽快:
//圆角的方向
- (UIView * (^)(UIRectCorner))radiusCorner;
//圆角的弧度
- (UIView * (^)(CGFloat))radiusFloat;
//边线长度
- (UIView * (^)(CGFloat))lineWidth;
//边线颜色
- (UIView * (^)(UIColor *))lineColor;
//填充颜色
- (UIView * (^)(UIColor *))fillColor;
使用方法:
UIView *oneView = [[UIView alloc] init];
[self.view addSubview:oneView];
[oneView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(100);
make.centerX.equalTo(self.view);
make.width.mas_equalTo(200);
make.height.mas_equalTo(40);
}];
oneView.radiusCorner(UIRectCornerTopLeft).radiusFloat(15).fillColor([UIColor redColor]).lineColor([UIColor blueColor]).lineWidth(0.5);
[oneView manualDrawing];
作者
许可证
YKCornersView 在MIT许可下可用。更多信息请参阅LICENSE文件。