问题标签 [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 回答
862 浏览

iphone - 为什么 CALayer 的 visibleRect 方法总是为我的 UIImageView 提供相同的宽度,即使我将它移出屏幕的一半?

我从一个方法内的 UIImageView 获得了 visibleRect,该方法被多次调用以将该视图向右移动。一旦它部分离开屏幕,我预计 visibleRect 会变小。但事实并非如此。

当我需要视图的真正可见矩形时,我必须考虑一些特别的事情吗?实际上我认为它总是会被超级视图剪裁,因此该方法返回真正的可见矩形尺寸。

但是当我将 UIImageView 逐步向右移动时,它仍然保持在 300.0 宽度。即使它的一部分从窗口中消失。

0 投票
3 回答
2824 浏览

iphone - 我不能在 UIView 类之外初始化 CALayer 有什么原因吗?

我一直在尝试将我们的 CALayers 作为我正在开发的 iPhone 应用程序中的“精灵”。从我一直在阅读的内容来看,这似乎是正确的做法。

当我在 UIView 类中设置图层时,我可以让图层显示在屏幕上: NSLog(@"GameView initWithCoder");

但是,当我尝试在 UIView 之外初始化 CALayer 时,我的应用程序崩溃了:


显然我在这里做错了什么,但我只是不知道那会是什么。我已经阅读了核心动画编程指南和 iPhone 应用程序编程指南,但他们似乎真的没有谈论如何初始化 CALayer,而不是顺便说一句。

我只需要在正确的方向轻轻推动。在 iPhone 编程方面,我对所学的所有其他知识都有了很好的理解。我只是在图形、图层和动画方面遇到了一些问题。

提前致谢!

0 投票
1 回答
1849 浏览

objective-c - 如何子类化 CALayer 以返回预样式层?

您如何子类化 CALayer 以便返回已设置样式属性的图层?

以便:

将创建具有这些属性的层;

这样我就可以设置它的框架并将其添加到树中。

但我想我的问题真的可能只是,你如何子类化一个对象,以便它具有在创建时已经设置的属性。可能的?

0 投票
2 回答
898 浏览

iphone - 扩展多个 CALayer 的性能问题

我有两个 CALayer 子类,每个子类都有自己的 drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 委托。它们都是简单的图层(一些用 CG 路径绘制的单色形状),但我需要同时缩放大约 12 个实例,而且我在帧速率方面遇到了一些问题。我将所有图层标记为不透明以尝试释放一些循环,并尝试使用隐式和显式基本动画(在边界属性本身上),以及将 CA3DTransform 矩阵分配给变换属性。

有谁知道在保持良好帧速率的同时快速调整对象大小的好方法?

0 投票
1 回答
3887 浏览

cocoa - CALayer坐标系

我对 Cocoa 很陌生,但想知道如何更改 CALayer 的坐标系。我阅读了Core Animation Programming Guide 中的Layer Geometry and Transforms文章,但仍然需要一些实用的建议。

默认坐标系在左下角有 (0,0)。我想将其更改为图层的中心。那可能吗?

我尝试了什么:使用 CATransform3DTranslate 作为 sublayerTransform 到图层框架的 MidX 和 MidY,子图层显示在正确的位置。在 setFrameSize 事件中,翻译应该被重新计算并再次应用。我宁愿自动刷新(没有“步骤”)。

或者我应该使用 kCAConstraintMidX 将子层 MidX 与层 MidX 相关联并使用偏移量?实际上,我使用 CATextLayers 作为子图层,并且希望将文本居中对齐,从而将文本的中心相对于超级图层的中心定位。我试过这个,但是当我调整超级层的大小时它似乎没有自动刷新。

0 投票
2 回答
9131 浏览

iphone - 创建包含图像的 CALayer 的最有效方法是什么?

我想知道最有效的方法是制作一个带有图像的 CALayer。

我知道你可以加载 UIImage 然后调用 [image CGImage] 但这是最​​好的方法吗?据我从Apple的文档中可以看出,这是您可以做到的唯一方法。

0 投票
2 回答
1122 浏览

iphone - 在 iPhone 上显示 PDF - CALayers?

我很头疼试图弄清楚这一点。我正在尝试显示 pdf 文件中的单个页面(唯一的页面)。这个 pdf 页面是一张地图,我需要通过捏合等来放大和缩小……我正在使用 CATileLayers 进行此操作(每个图块为 256x256,但可以将其设置为更大的尺寸)。它完成了这项工作,但真的很慢。我想做的是一次加载所有这些图块。那可能吗?drawInContext: 为每个图块调用,但是当我四处移动但我必须等待它们出现,我希望在设备上获得流畅的体验。我还没有真正进入缩放部分,但恐怕它需要比我预期的更多的工作。除此之外,还有什么方法可以将超级层的边界设置为在到达边界时停止,或者我必须在 touchesMoved 上手动执行此操作?任何人都不得不处理这种情况?

我正在尝试调整来自 Bill Dudley 的代码:http: //bill.dudney.net/roller/objc/entry/catiledlayer_example,但运气不佳。

任何帮助和建议将不胜感激。谢谢

0 投票
2 回答
984 浏览

objective-c - 如何将模型和控制器与基于 CALayer 的 UI 分开?

我正在尝试用更时髦的 UI重新实现我编写的旧黑白棋棋盘游戏。我查看了 Jens Alfke 的 GeekGameBoard 代码以获得灵感,而 CALayers 看起来像是实现 UI 的方式。

然而,在 GeekGameBoard 代码中,模型和视图并没有清晰的分离;模型就是视图,这使得例如制作游戏状态的副本以便为 AI 玩家执行游戏树搜索变得困难。但是,我似乎无法想出另一种结构方法,允许模型和视图分离,而不涉及保持两个平行网格的持续战斗(模型打开,视图一个) 同步。当然,这有其自身的问题。

如何最好地实现 AI 搜索友好的模型结构和显示友好的视图之间的关系?任何建议/经验将不胜感激。我害怕/一半期待着“没有好的答案:尽你所能处理它”这样的答案,但我准备好感到惊讶了!


感谢彼得的回答。但是,我不完全确定我完全理解它。如果您只有一组初始的可以移动甚至移除的部件,我可以看到这是如何工作的,但是当一个人放下一个新部件时会发生什么?它会像这样工作吗:

  1. 用户在视图中单击。
  2. 查看点击被转换为板位置并通知控制器。
  3. 控制器创建一个具有后继状态的新董事会(如果合适,即这是一个合法的举动)。
  4. 视图通过其绑定获取新板,拆除现有的视图/层层次结构并将其替换为当前状态。

听起来对吗?

PS:很抱歉未能指定它是用于 iPhone 还是 Mac。我对适用于 iPhone 的东西最感兴趣,但如果我能让它首先在 Mac 上很好地工作,我相信我可以调整解决方案以自己在 iPhone 上工作。(或发布一个新问题!)

0 投票
2 回答
1799 浏览

iphone - 如何从 CALayer 中仅获取部分矩形?

我将 UITextView 的“快照”作为 CGImage,但问题是 UITextView 的内容很长(大约 110k contentSize.height),当我将 UITextView 层渲染到上下文中时,内存使用量变为~130MB,这会导致应用程序在设备上运行时崩溃。

这是代码。viewref是 UITextView 的一个实例。

那么,我可以只将 UITextView 层的一部分渲染到图像上下文吗?

0 投票
5 回答
13523 浏览

ios - UIView 动画与 CALayers

我正在努力用CALayer来概念化动画,而不是UIView自己的动画方法。把“核心动画”扔进去,好吧,也许有人可以从高层次上阐明这些概念,这样我就可以更好地想象正在发生的事情以及为什么我想将 UIView 动画(我现在很熟悉)迁移到 CALayer iPhone 上的动画。Cocoa-Touch 中的每个视图都会自动获得一个图层。而且,您似乎可以为一个和/或另一个设置动画?!?甚至将它们混合在一起?!?但为什么?线路在哪里?每个人的优点/缺点是什么?

核心动画编程指南立即跳转到图层和时序类,我认为需要退后一步,了解这些不同部分存在的原因以及它们之间的关系。