2010-12-15 47 views
0

我正在開發某種卡片遊戲,其中我的視圖對象(卡片等)都是CALayer。這些對象被添加爲mainBoard(CALayer)的子圖層,而該子圖層又是mainView[UIView layer]屬性的子圖層。一切正常,我可以做正確的測試,以確認通過mainView類的touchesBegan:withEvent:回調正常觸摸哪個圖層,依此類推。CALayer內的UIScrollView

不過,我需要讓我的mainBoard內滾動顯示「做大」 CALayers,所以我第一次嘗試將「做大」的CALayer一個CAScrollLayer裏面,但我注意到,CAScrollLayer並沒有真正滾動(沒有按」處理用戶輸入,既不繪製滾動條)。所以,解決方法是直接將UIScrollView添加到mainView UIView。 UIScrollView完美滾動,直到我嘗試使用[scrollView.layer addSublayer:<bigger layer>]將「更大」圖層添加到它。

有沒有人有任何想法,我怎麼可以有一個CALayer「可滾動」的對象?

謝謝!

+1

增加大層滾動視圖時,除此之外,我認爲直接添加子層scrollView.layer到底發生了什麼?是不是一個好主意,你爲什麼不把它們添加到包含視圖的層通過你的滾動視圖? – nacho4d 2010-12-15 19:00:26

+0

你可以定義什麼是「更大」的CALayers?你能簡單地描述爲什麼「更大」的物品必須是CALayers?通過閱讀你的問題,我想知道你爲什麼不簡單地使用UIScrollView - 它包含了你所要求的一切,最好不要重新實現。 – Mark 2011-01-17 18:22:38

+0

我的整個應用程序由CALayers對象組成,因爲我正在使用Core Animation級別而不是UIKit抽象級別。問題是,核心動畫不提供滾動組件,所以我不得不做一個變通方法混合的UIKit對象(UIScrollView中)和CoreAnimation對象(CALayers),使它們無縫地工作。這不是一個問題,因爲UIKit只是CoreAnimation的一個包裝。謝謝 – 2011-01-20 13:23:49

回答

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中,並將其添加爲子視圖。

感謝