2010-12-15 8 views
0

私はビューオブジェクト(カードなど)がすべてCALayersであるカードゲームを開発しています。これらのオブジェクトは、mainBoard(CALayer)のサブレイヤとして追加されます。これは、[UIView layer]プロパティのサブレイヤです(mainView)。すべてがOKです。mainViewクラスのコールバックtouchesBegan:withEvent:を介してどのレイヤーに触れているかを確認するためのヒットテストを行うなどのことができます。CALayer内のUIScrollView

しかし、私は「大きな」CALayersを表示するために私のmainBoard内のスクロールを持っている必要がありますので、私は最初のCAScrollLayer内部の「大きな」のCALayerを追加してみましたが、私はCAScrollLayerは本当に(doesnの」スクロールしないことに気づきましたユーザー入力を処理する、スクロールバーを描画しない)。そのため、回避策は、UIScrollViewをmainView UIViewに直接追加することです。 [scrollView.layer addSublayer:<bigger layer>]を使用して、「より大きな」レイヤーを追加しようとするまで、UIScrollViewは完全にスクロールします。

私はCALayer内で「スクロール可能な」オブジェクトをどのように持つことができますか?

ありがとうございます!

+1

がなぜ含まれるビューのレイヤーに追加していない、良いアイデアではありませんあなたのscrollviewによって? – nacho4d

+0

「より大きい」CALayersが何であるかを定義できますか? 「より大きな」アイテムがCALayersでなければならない理由を簡単に説明できますか?あなたの質問を読んで、なぜあなたはそれを単純に保つのではなく、ちょうどUIScrollViewを使用しているのだろうと思います。あなたが求めてきたものはすべてあります。 – Mark

+0

私はUIKit抽象化レベルの代わりにCore Animationレベルで作業しているので、アプリケーション全体がCALayersオブジェクトで構成されています。問題は、Core Animationはスクロール可能なコンポーネントを提供しないため、UIKitオブジェクト(UIScrollView)とCoreAnimationオブジェクト(CALayers)を混在させ、シームレスに動作させるという回避策を講じなければならなかった。 UIKitはCoreAnimationの単なるラッパーなので、これは問題ではありません。ありがとう –

答えて

0

nacho4dが私の質問に答えました。 マークに返信:「大きな」レイヤー(画面内で使用可能な領域よりも大きい境界を持つレイヤー(したがって、スクロール可能な領域に含める必要があります))。問題だった

[<uiscrollview> addSubview:wrapperView]; 

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

:私はUIScrollViewのサブビューのようビューを追加することができ、その後

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

ソリューションは、最初のUIViewで「大きな」層をラップしましたUIScrollviewのサブレイヤとして直接「より大きな」レイヤーを追加しようとしていましたが、代わりにUIViewにラップし、サブビューとして追加しました。

おかげ

scrollviewに大きなレイヤーを追加するとき、私はscrollView.layerに直接サブレイヤを追加することを考えるだけでなく、正確に何が起こるのか?
関連する問題