问题标签 [calayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2051 浏览

cocoa - 如何使用 CALayers 保存状态?

我有一个简单的 iphone 应用程序,它使用 CALayer 的子类绘制块,并试图找到保存状态或保留当前创建的图层的最佳方法。

我尝试使用Brad Larson 在上一个问题中关于在 NSUserDefaults 中存储自定义对象的答案,这有助于保持我的 CALayer 子类,但它不是几何和背景颜色等基本状态,所以它们在那里但没有在重新启动时呈现。

我使声明的实例变量符合 NSCoding 协议,但不知道如何在不重新声明所有属性的情况下使 CALayer 的属性执行相同的操作。或者这不是完全正确/最好的方法吗?

这是我用来存档图层数组的代码:

这是我用来在 -viewDidLoad 中重新加载图层的代码:

在 -restoreStateWithData 中:

0 投票
2 回答
15985 浏览

ios - UIView的clipsToBounds和CALayer的masksToBounds是什么关系?

AUIView有一个CALayer。这很确定。但两者似乎都提供了相同的含义。

如果我设置clipsToBounds=YES了,这也会设置图层masksToBounds=YES吗?为什么不同的名字?有谁知道?

0 投票
1 回答
1026 浏览

iphone - 可以使用自定义变换(理论上)在 CALayer 上创建水波纹效果吗?

可以创建自定义变换矩阵。但我想知道它们是否适合在 CALAyer 上制作水波纹效果。在动画中想象其中的 20 个。有人可以告诉吗?

0 投票
2 回答
2862 浏览

objective-c - 使用 Core Animation/CALayer 进行简单的分层绘画

我想创建一个采用分层绘画方法的自定义 NSView。我想大多数图层的宽度和高度与背景视图相同。

即使我不希望需要太多动画,使用像 CALayer 这样的核心动画类来完成这个任务是否合适?有没有更合适的方法?

需要澄清的是,视图并不意味着像 Photoshop 类应用程序中的画布。它更像是一种数据显示,应该允许用户交互(选择、移动、滚动等)

0 投票
1 回答
7281 浏览

iphone - CALayer drawInContext vs addSublayer

如何在同一个 UIView 中正确使用这两者?

我有一个自定义子类 CALayer,在其中我在 drawInContext 中绘制了一个模式

我有另一个,其中我将覆盖 PNG 图像设置为内容。

我有第三个只是背景。

我如何覆盖所有这 3 个项目?

如果我按照这个顺序做的话,另外两个自己会正确绘制。无论我尝试将bottomLayer放在哪里,它总是会阻止squaresLayer绘制。我需要 3 层的原因是我打算为背景和自定义层中的颜色设置动画。顶层只是一个图形覆盖。

0 投票
1 回答
3838 浏览

iphone - 如何使用 CAGradientLayer?

我正在跟上 OS 3.0 中引入的新 API,尤其是对 Core Animation 的酷炫新改进(主要是在 CALayer 等上)。现在我想弄清楚如何使用 CAGradientLayer。一开始看起来很简单,但是它需要的颜色属性的 NSArray 必须包含 CGColorRef (根据头文件)。我尝试过强制转换为 (id),但是 NSArray 似乎包含 NSCFType 对象,这听起来不太好。

有人知道如何使用它或可以指出一些好的代码示例吗?

谢谢

0 投票
2 回答
1605 浏览

iphone - CATiledlayer 委托未被调用

我正在尝试使用单独的委托类(就像许多示例一样)在 CATiledlayer 中执行大图像的绘制。平铺层已添加为单独视图中的子层。我首先从视图控制器开始。

我的观点目前只是一个基本观点。我想要这个在视图中,因为我稍后会将它添加到滚动视图中,它会响应触摸事件。

这就是一切都出错的地方......

尽管我为平铺层调用了 setNeedsLayout,但从不调用 drawLayer 方法,因此从不绘制图像。

0 投票
2 回答
2559 浏览

ios - iPhone旋转时CALayer的自动旋转

我有一个 UIViewController,我在其中将 CALayer 子类添加到视图层:

当我旋转设备时,视图会旋转,但 CALayer 不会。它有点被分流到左边,仍然是纵向视图。

有没有办法让子层自动旋转或者我需要应用变换?

0 投票
3 回答
3450 浏览

iphone - CAShaperLayer -renderInContext 不起作用?

我可以使用以下代码从 Core Animation 层创建 UIImage:

此代码在我的 CALayer 派生类中。我遇到的问题是我有两个 CAShapeLayers,它们是我的图层的子图层,它们不会渲染到结果图像。如果我将标准 CALayers 添加为子项,它们会得到很好的渲染。苹果文档说:

将接收器及其子层渲染到指定的上下文中。

它还说它从 iPhone OS 2.0 开始就可用。想知道我是否遗漏了什么,或者我是否应该提交雷达。

有什么想法可以阻止孩子 CAShapeLayers 被图像吸引吗?

谢谢。

0 投票
1 回答
968 浏览

uiview - 对 UIView 的 ivars 进行键值编码

我有兴趣在我的 UIView 更改时运行一些方法,无论是通过帧更改还是仿射变换。我最好的想法是通过观察以下值的变化来做到这一点:

myView.framemyView.transform

但是,UIViews 的视图部分不是 Key-Value 投诉。幸运的是视图的模型部分,CALayer 是。所以我设置如下:

在 viewDidLoad: 视图的一部分。我对“框架”键做了同样的事情。但是当视图改变时,无论是通过在它的超级视图中移动视图,还是通过仿射变换,方法:

永远不会被调用。是什么赋予了?有没有更好的方法来观察 UIViews 框架的变化和变换?