在CALayer中的UIScrollView

时间:2010-12-15 18:43:08

标签: iphone ipad uiscrollview calayer

我正在开发某种卡片游戏,其中我的视图对象(卡片等)都是CALayers。这些对象被添加为mainBoard(CALayer)的子图层,而后者又是[UIView layer] mainView属性的子图层。一切都很好,我可以通过touchesBegan:withEvent:类的mainView回调来进行测试以验证正在触摸哪个图层,依此类推。

但是,我需要在mainBoard内部滚动显示“更大”的CALayers,所以我首先尝试在CAScrollLayer内添加“更大”的CALayer,但我注意到了{{ 1}}没有真正滚动(不处理用户输入,也没有绘制滚动条)。因此,解决方法是将UIScrollView直接添加到CAScrollLayer UIView。 mainView滚动完美,直到我尝试使用UIScrollView添加“更大”的图层。

有没有人知道如何在CALayer中拥有“可滚动”对象?

谢谢!

1 个答案:

答案 0 :(得分:0)

nacho4d为我的问题指出了答案。 回复标记:“更大”的图层(边界大于屏幕中可用区域的图层(因此,需要包含在可滚动区域中)。)

解决方案是先在UIView中包装“更大”的图层:

UIView *wrapperView = ...
[wrapperView.layer addSublayer:<bigger_layer>];

之后,我可以将视图添加为UIScrollview的子视图:

[<uiscrollview> addSubview:wrapperView];

// set up scrolling properties
<uiscrollview>.contentSize = <bigger_layer>.frame.size;

问题在于我试图直接将“更大”的图层添加为UIScrollview的子图层,而是将其包装在UIView中并将其添加为子视图。

由于