Shapes 是一组围绕 CAShapeLayer 和 UIBezierPath 的包装器,允许在 iOS 上绘制和动画几何形状视图。关于它的更多信息可以在博客上阅读:[http://mlsdev.com/blog/23](http://mlsdev.com/blog/23)
DTShapeView
是一个UIView子类,其背后由CAShapeLayer而不是CALayer支持。它提供了更改CAShapeLayer路径、填充和描边颜色以及其他图层属性的API,基本允许UIView表现出几何形状的行为。
所有 DTShapeView
属性都会自动转换为CAShapeLayer属性或直接使用CAShapeLayer属性。您可以使用自己喜欢的任何样式,但我们推荐使用 UIBezierPath 和 DTShapeView
属性,因为这允许您完全绕过 CoreFoundation 对象。这也允许您使用 CoreGraphics API 而不是 QuartzCore。
DTShapeView
在其路径内完全支持显式和隐式动画以及点击测试。
DTProgressView
是一个DTShapeView
子类,允许动画任何形状的进度视图。《code>DTProgressView 使用 DTShapeView
路径作为轨道。
默认情况下,DTProgressView
填充整个视图边界,从左到右填充视图。创建进度视图所需要做的,就是将其拖放到您的视图中,设置描边颜色,然后进度视图就准备好了!
self.simpleProgressView.strokeColor = [UIColor greenColor];
每当进度发生变化时,只需调用
[self.simpleProgressView setProgress:progress animated:YES];
进度更改将进行动画。的 DTProgressView
支持任何 UIBezierPath 能够定义的几何形状,并允许自定义动画持续时间和动画函数。
DTDimmingView
允许通过“剪切”视图中的可见路径来变暗视图的一部分。默认情况下,变暗路径包含整个UIView边界。创建一个描述应可见视图部分的UIBezierPath,并将其设置在DTDimmingView
实例上以允许内容可见。
UIBezierPath * roundedPath = [UIBezierPath bezierPathWithOvalInRect:CGRectInset(self.view.bounds, 100, 100)];
self.dimmingDynamicView.visiblePath = roundedPath;
DTShapeButton
是一个UIButton,在其中添加了DTShapedView
作为子视图。因此,通过更改 DTShapedView
属性,它允许操纵UIButton的形状和视觉外观。默认情况下,按钮形状是一个矩形,UIButton的边界设置为它的框架。例如,绘制AppStore下载按钮的初始状态看起来像这样
self.downloadButton.shape.path = [UIBezierPath bezierPathWithRoundedRect:self.downloadButton.bounds cornerRadius:5.0f];
要了解更多关于形状之间动画如何工作的信息,请阅读使用 Shapes 制作可动画按钮教程
查看在 ShapesExample 文件夹中提供的示例项目。
使用 CocoaPods
pod 'Shapes', '~> 1.0.0'