我正在开发某种卡片游戏,其中我的视图对象(卡片等)都是CALayers。这些对象被添加为mainBoard
(CALayer)的子图层,而后者又是[UIView layer]
mainView
属性的子图层。一切都很好,我可以通过touchesBegan:withEvent:
类的mainView
回调来进行测试以验证正在触摸哪个图层,依此类推。
但是,我需要在mainBoard
内部滚动显示“更大”的CALayers,所以我首先尝试在CAScrollLayer
内添加“更大”的CALayer,但我注意到了{{ 1}}没有真正滚动(不处理用户输入,也没有绘制滚动条)。因此,解决方法是将UIScrollView直接添加到CAScrollLayer
UIView。 mainView
滚动完美,直到我尝试使用UIScrollView
添加“更大”的图层。
有没有人知道如何在CALayer中拥有“可滚动”对象?
谢谢!
答案 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中并将其添加为子视图。
由于