【发布时间】:2010-12-15 18:43:08
【问题描述】:
我正在开发某种纸牌游戏,其中我的视图对象(卡片等)都是 CALayers。这些对象作为mainBoard(CALayer)的子层添加,而后者又是mainView 的[UIView layer] 属性的子层。一切正常,我可以做命中测试,通过mainView类的touchesBegan:withEvent:回调来验证哪个层被正常触摸,等等。
但是,我需要在我的 mainBoard 中滚动以显示“更大”的 CALayer,所以我尝试首先在 CAScrollLayer 中添加“更大”的 CALayer,但我注意到 CAScrollLayer 没有真正滚动(不处理用户输入,也不绘制滚动条)。因此,解决方法是将 UIScrollView 直接添加到 mainView UIView。 UIScrollView 滚动完美,直到我尝试使用 [scrollView.layer addSublayer:<bigger layer>] 向其添加“更大”层。
有人知道如何在 CALayer 中拥有“可滚动”对象吗?
谢谢!
【问题讨论】:
-
将大图层添加到滚动视图时究竟会发生什么?,此外我认为将子图层直接添加到 scrollView.layer 不是一个好主意,为什么不将它们添加到包含的视图的图层中通过你的滚动视图?
-
你能定义什么是“更大”的 CALayers 吗?你能简单描述一下为什么“更大”的项目必须是CALayers吗?通过阅读您的问题,我想知道您为什么不保持简单而只使用 UIScrollView - 它具有您所要求的一切,最好不要重新实现。
-
我的整个应用程序由 CALayers 对象组成,因为我在核心动画级别而不是 UIKit 抽象级别工作。问题是 Core Animation 不提供 Scrollable 组件,所以我不得不做一个解决方法,混合 UIKit 对象 (UIScrollView) 和 CoreAnimation 对象 (CALayers) 并使它们无缝工作。这不是问题,因为 UIKit 只是 CoreAnimation 的包装器。谢谢
标签: iphone ipad uiscrollview calayer