1
看起來像一個非常簡單的問題!但我很困難。如何爲大型UIScrollView設置背景圖案(即與視圖滾動)
我的想法和嘗試至今:
scrollView.backgroundColor = [UIColor colorWithPatternImage:myImage]]
- 不與內容滾動
- 創建
UIView
的contentSize
(實際尺寸,由於大以滾動視圖上的彈性反彈),並使用上面的o模式在UIScrollView
的這個子視圖中。- 當UIView變得太大時,導致海量內存命中(和崩潰)。參見:Large UIScrollView with background pattern fails
- 到類似的(2),exept我只創建一個
UIView
的背景圖像的重複,將可以看出的最大數量的大小,並且巧妙地移動視圖,以在任何需要的以顯示正確的背景重複。- 導致此背景視圖在動畫滾動時出乎意料地左右移動。
- 創建
UIView
子類並覆蓋drawRect
。使用各種核心圖形技術手動繪製內容。- 不具動畫性。實現我自己的
contentOffset
屬性不是標準的核心動畫屬性。 - 上
UIScrollView
重寫drawRect
不尊重內容偏移量,因爲它滾動/動畫不會被調用多次。 rect參數始終是簡單的UIScrollView
的界限。
- 不具動畫性。實現我自己的
- 與(4),除了設置我
UIView
子類的bounds.origin
在我setContentOffset
實現,因爲它是一個動畫屬性。drawRect
似乎並沒有被調用每一幀。
- 使用
CATiledLayer
,如建議在這個答案:Large UIScrollView with background pattern fails。這裏的實現細節:http://www.cimgf.com/2011/03/01/subduing-catiledlayer/。- 我真的不希望看到瓷磚異步繪製爲用戶滾動的醜陋。這只是一個簡單的背景圖案!
這似乎是最簡單的事情!爲什麼這麼難!
謝謝郭。我認爲這看起來像迄今爲止最好的答案。我想知道是否有可能使這個工作沒有任何淡入淡出的問題?如果是這樣,我可能會全力以赴,並利用我正在使用這項技術的事實,並且創造一個巨大的平鋪背景 - 將它變成一個真實的特徵! – 2012-02-04 00:05:27
啊,對不起,沒有意識到他們的平鋪示例不使用'CATiledLayer',而是使用多個'UIImageViews'想想我可能會給技術去... – 2012-02-04 11:23:40
好吧,標記爲正確的解決方案,因爲我決定去儘管遠非簡單! – 2012-02-05 20:47:37