ios - 使用 CALayers 绘制自定义形状和动画自定义属性?

标签 ios uikit core-graphics calayer uibezierpath

我有一个自定义形状,我想使用 UIBezierPaths 绘制它,并且我想在我的 View 中使用此绘图作为 CALayer。如果我将其直接绘制到 UIView(在drawRect 内部)上,我使用的贝塞尔路径就可以工作。我想知道如何使用相同的贝塞尔曲线绘图并在我的 CALayer 中执行绘图。然后我会将此图层添加为我的 View 中的子图层!

例如,假设我正在用贝塞尔曲线路径绘制一个同心圆,并且我想使用 CALayer 来绘制它,我将如何对路径的自定义属性进行动画处理,例如它的中心、半径、起始角度和结束角度?

具体来说,我想知道我应该怎么做

  1. 安排我的 CALayer(初始化、绘图、更新绘图等)
  2. 如何在 CALayer 中绘制贝塞尔曲线?
  3. 如何在图层和包含该图层的 View 之间进行交互?

感谢任何帮助!

最佳答案

以下是如何在 CALayer 中创建和绘制 UIBezierPath。使用 CAShapeLayer 是最简单的方法:

UIBezierPath *circlePath = [UIBezierPath bezierPathWithOvalInRect:...]; 
CAShapeLayer *circleLayer = [CAShapeLayer layer];
circleLayer.path = circlePath.CGPath;
[self.view.layer addSublayer:circleLayer];

这是一个很好的tutorial on creating animatable properties in CALayers

关于ios - 使用 CALayers 绘制自定义形状和动画自定义属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18955021/

相关文章:

为 webView 加载设置 iOS 超时?

ios - 像 UIPageViewController 这样的自定义 ViewController Transition

ios - UIView 数组

swift - 计算虚线圆圈中的笔画属性 'Dash' - Swift

macos - OpenGL 纹理单元的范围是什么?

ios - 如何防止WKWebView在应用程序发送到后台后被清空

iphone - Cocos2d 检测特定 Sprite 上的触摸

ios - 在 Swift 中将参数传递给选择器

ios - 如何将委托(delegate)函数转换为 IBAction 函数

ios - 任意混合半透明的PNG,在iOS上保留Alpha