2012-02-03 59 views
1

看起來像一個非常簡單的問題!但我很困難。如何爲大型UIScrollView設置背景圖案(即與視圖滾動)

我的想法和嘗試至今:

  1. scrollView.backgroundColor = [UIColor colorWithPatternImage:myImage]]
    • 不與內容滾動
  2. 創建UIViewcontentSize(實際尺寸,由於大以滾動視圖上的彈性反彈),並使用上面的o模式在UIScrollView的這個子視圖中。
  3. 到類似的(2),exept我只創建一個UIView的背景圖像的重複,將可以看出的最大數量的大小,並且巧妙地移動視圖,以在任何需要的以顯示正確的背景重複。
    • 導致此背景視圖在動畫滾動時出乎意料地左右移動。
  4. 創建UIView子類並覆蓋drawRect。使用各種核心圖形技術手動繪製內容。
    • 不具動畫性。實現我自己的contentOffset屬性不是標準的核心動畫屬性。
    • UIScrollView重寫drawRect不尊重內容偏移量,因爲它滾動/動畫不會被調用多次。 rect參數始終是簡單的UIScrollView的界限。
  5. 與(4),除了設置我UIView子類的bounds.origin在我setContentOffset實現,因爲它是一個動畫屬性。
    • drawRect似乎並沒有被調用每一幀。
  6. 使用CATiledLayer,如建議在這個答案:Large UIScrollView with background pattern fails。這裏的實現細節:http://www.cimgf.com/2011/03/01/subduing-catiledlayer/
    • 我真的不希望看到瓷磚異步繪製爲用戶滾動的醜陋。這只是一個簡單的背景圖案!

這似乎是最簡單的事情!爲什麼這麼難!

回答

1

也許示例代碼:ScollViewSuit-> 3_Tiling可以幫助你。您可以在官方docset中搜索它。

它的工作方式與CATiledLayer類似,但只能使用UIKit,該tile已加載到主線程中。

我真的不認爲這是一個好的解決方案。

+0

謝謝郭。我認爲這看起來像迄今爲止最好的答案。我想知道是否有可能使這個工作沒有任何淡入淡出的問題?如果是這樣,我可能會全力以赴,並利用我正在使用這項技術的事實,並且創造一個巨大的平鋪背景 - 將它變成一個真實的特徵! – 2012-02-04 00:05:27

+0

啊,對不起,沒有意識到他們的平鋪示例不使用'CATiledLayer',而是使用多個'UIImageViews'想想我可能會給技術去... – 2012-02-04 11:23:40

+0

好吧,標記爲正確的解決方案,因爲我決定去儘管遠非簡單! – 2012-02-05 20:47:37