CKShapeView 支持CAShapeLayer
https://github.com/conradev/CKShapeView
CKShapeView is a UIView
subclass that is backed by a CAShapeLayer
.
In other words, it is a view that is capable of rendering an arbitrary CGPath
.
It is completely configurable and animatable, so you can have custom drawn views without needing to subclass.
CKShapeView
has all of the properties of CAShapeLayer
, with the addition of a hitTestUsingPath
property that allows you to hit test using the path instead of the view's bounds.
CKShapeView是一个UIView的子类,它支持CAShapeLayer。
换句话说,它是一个view,可以用来渲染CGPath。
我完全配置了它并可以动画化,所以,你可以直接定制这个view而不需要继承至它的子类。
CKShapeView有着CAShapeLayer的所有属性,我添加了一个额外的属性hitTestUsingPath,允许你使用路径来做点击测试而不是这个view的bounds。
CKShapeView *pieView = [[CKShapeView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
CGFloat width = CGRectGetWidth(pieView.bounds);
pieView.path = [UIBezierPath bezierPathWithOvalInRect:CGRectInset(pieView.bounds, width/4, width/4)];
pieView.lineWidth = width/2;
pieView.fillColor = nil;
pieView.strokeColor = [UIColor blackColor];
[self.view addSubview:pieView];
UIViewAnimationOptions options = UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat;
[UIView animateWithDuration:1.0f delay:0.0f options:options animations:^{
pieView.strokeEnd = 0.0f;
} completion:nil];