问题标签 [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 投票
1 回答
1271 浏览

iphone - CALayer 并获取其 UIView 的当前上下文

我尝试在 iphone 的 UIView 中学习绘图过程。据我了解,仅当方法 [UIView drawRect] 存在时,绘图过程才会发生。它以 [ CALayer display ] 开始,并在该方法中调用 [UIView drawRect] (准确地说:首先调用 [ UIView drawLayer:layer inContext:context ] 并在此方法中调用 [UIView drawRect])。

我有两个问题:

  1. [ CALayer display ]方法如何获取UIView的上下文?(在 [ CALayer display ] 方法中的 [ UIView drawLayer:layer inContext:context ] 中使用)
  2. CALayer 内容的更新是如何发生的?(此处链接中描述的更新:[ CALayer display ])
0 投票
4 回答
2320 浏览

objective-c - CABasicAnimation CALayer 转换的可见性(重叠)问题

我的对象上有两个 UIImageViews,我正在尝试将它们设置为像书一样的页面。我使用了一些内置动画一段时间(UIViewAnimationTransitionFlipFromLeft/Right),并决定我可以做得更好。我在这里找到了我想要的一半动画的一个很好的例子:http: //fiftysixtysoftware.com/blog/2009/uiview-pageopen-sample-project/

我能够从那里推断出让我的动画工作......但我遇到的问题是我的动画图像(右图像)总是显示在左图像下方。

这是 init 中的代码:

...并执行实际动画(请注意,这是动画的后半部分,与我的 imageLeft 视图“重叠”的一半):

我尝试过的事情:(你可以在上面的代码中看到)

  • 将SubviewToFront/sendSubviewToBack
  • 在图层上设置 Z 索引

提前感谢您的任何建议或智慧。同样,问题在于我的 imageLeft 总是显示在动画的顶部。

0 投票
2 回答
2813 浏览

iphone - 传递给 drawLayer:inContext: 的上下文是什么?

在 Iphone 开发中,我想在图层中绘制上下文。那么问题来了:

传递给 drawLayer:inContext: 的上下文到底是什么?是图层内容的上下文还是 UIview 的上下文?

如果这是 UIView 的上下文,它是哪个 UIView?

提前致谢。

0 投票
7 回答
7730 浏览

iphone - 发送到解除分配的实例

每当我将视图控制器推送到我的堆栈上,然后将其弹出时,我都会收到此错误:

它似乎发生在dealloc被弹出的视图控制器上调用之后,并且仅适用于该视图控制器。我确信 CALayer 与视图本身有关,因为我不使用它们。

有任何想法吗?

编辑:这是回溯

0 投票
9 回答
14948 浏览

iphone - UIScrollView zoomToRect 没有缩放到给定的矩形(从 UITouch CGPoint 创建)

我的应用程序有一个带有一个子视图的 UIScrollView。子视图是一个扩展的 UIView,它使用 drawLayer 事件中的图层将 PDF 页面打印到自身。

使用内置捏合进行缩放效果很好。setZoomScale 也可以按预期工作。

我一直在努力使用 zoomToRect 函数。我在网上找到了一个示例,它从给定的 CGPoint 生成 CGRect zoomRect 变量。

在 touchesEnded 函数中,如果有双击并且它们一直被缩小,我想放大到我创建的 PDFUIView,就好像它们在他们双击的捏合中心进行捏合一样。

因此,假设我将 UITouch 变量传递给我的函数,如果他们双击则使用 zoomToRect。

我从在苹果网站上找到的以下功能开始:

http://developer.apple.com/iphone/library/documentation/WindowsViews/Conceptual/UIScrollView_pg/ZoomZoom/ZoomZoom.html

以下是我的 UIScrollView 扩展类的修改版本:

当我这样做时, UIScrollView 似乎使用上方 zoomRect 的右下边缘而不是中心进行缩放。

如果我像这样制作 UIView

红色框显示在中心,触摸点已死。

请注意:我是从我的 PC 上写这篇文章的,我记得在我的 Mac 上搞乱了除以二的部分,所以假设这会在中心绘制一个触摸点的矩形。如果 UIView 偏离中心但放大到正确的位置,那就太好了。

但是,当它执行 zoomToRect 时,它似乎使用了放大结果左上角的 zoomRect 的右下角。

另外,我注意到根据我在 UIScrollView 上单击的位置,它会锚定到不同的位置。似乎中间有一个十字架,它以某种方式反映了这些点,就好像中间左边的任何地方都是负面的反映,而中间的任何地方都是正面的反映?

这似乎很复杂,不应该只是缩放到 UIView 能够绘制的矩形吗?

我进行了大量研究来弄清楚如何创建高质量缩放的 PDF,所以我假设使用 CALayer 可能会脱离坐标系?但是对于 UIScrollView 来说,它应该将其视为具有 768x985 尺寸的视图。

这有点高级,请假设创建 zoomRect 的代码都很好。UIScrollView 中的 UIView 中的 CALayer 有一些更深层次的东西......

0 投票
1 回答
2912 浏览

objective-c - 使用蒙版在 CALayer 上盲目动画

我想在图像上创建“盲”效果,以便图像“盲”并出现。

有点像这种 JavaScript 过渡: https ://github.com/madrobby/scriptaculous - http://madrobby.github.io/scriptaculous/effect-blinddown/

蒙版设置正确,因为如果我手动更改它的位置,它会隐藏并显示其后面的图像,但它不会动画!它只是在动画的最终位置结束,你永远看不到它实际上是盲目的。

请帮忙!也许这不是达到盲目效果的最佳方式?

0 投票
3 回答
6418 浏览

iphone - 如何围绕对角线旋转 CALayer?

我正在尝试实现一个翻转动画,以便在 iPhone 应用程序等棋盘游戏中使用。动画应该看起来像一个旋转并改变其背部颜色的游戏块(有点像黑白棋)。我已经设法创建了一个动画,它围绕其正交轴翻转作品,但是当我尝试通过改变围绕 z 轴的旋转来围绕对角轴翻转它时,实际图像也会旋转(不足为奇)。相反,我想围绕对角轴“按原样”旋转图像。

我试图改变layer.sublayerTransform,但没有成功。

这是我目前的实现。它通过一个技巧来解决在动画结束时获取镜像图像的问题。解决方案是不实际将图层旋转 180 度,而是将其旋转 90 度,更改图像,然后将其旋转回来。

最终版本:根据 Lorenzos 的建议创建离散键控动画并计算每一帧的变换矩阵。此版本尝试根据图层大小估算所需的“引导”帧数,然后使用线性键控动画。此版本以任意角度旋转,因此围绕对角线旋转使用 45 度角。

示例用法:

执行:

原始代码:

0 投票
3 回答
11394 浏览

iphone - 动画 CALayer 子类的自定义属性

我有一个 CALayer 子类 MyLayer,它有一个名为 myInt 的 NSInteger 属性。我真的很想通过 CABasicAnimation 为这个属性设置动画,但似乎 CABasicAnimation 只适用于所谓的“动画”属性(边界、位置等)。有什么我可以覆盖的东西来使我的自定义 myInt 属性可动画化吗?

0 投票
3 回答
3879 浏览

iphone - 在 3D (iPhone) 中包装/扭曲 CALayer/UIView(或 OpenGL)

我有一个 UIView(因此也是一个 CALayer),我试图在 3D 空间中稍微弯曲或弯曲。也就是说,假设我的 UIView 是一个平面标签,我想将其部分包裹在啤酒瓶上(不是 360 度,只是在一个“侧面”上)。

我认为这可以通过对视图的图层应用变换来实现,但据我所知,这种变换仅限于图层的旋转、缩放和平移。我在这里可能是错的,因为我的线性代数在这一点上是模糊的,至少可以这么说。

我怎样才能做到这一点?

0 投票
1 回答
1071 浏览

iphone - 嵌套的 CALayers 不接受透视变换

我正在尝试使用 CALayers 在我的一个应用程序中创建 3D 样式效果。但是,嵌套的 CALayers 似乎没有应用透视图。

用伪代码来说明,如果我有一个像这样应用透视的图层:

添加然后添加一个图层,如下所示:

透视按预期应用。但是,如果我要尝试进一步嵌套层

嵌套层在旋转时是平​​的。

就好像 superLayer 仅将变换应用于层层次结构中直接位于其下方的层。是这样吗?还是我做错了什么?