2012-06-30 152 views
3

您可能知道,CATiledLayer用於通過顯示在適於視圖尺寸比例平鋪圖像,以顯示較大的圖像。背景圖像CATiledLayer

我有CATiledLayer的工作方式類似於iOS文檔中可以找到的例子,我計算了rect在哪個行和列drawRect:(CGRect)試圖繪製其內容。

當視圖出現它開始與背後視圖/層沒有空白視圖繪製由瓷磚瓦的第一次。我試圖先放低分辨率圖像來填充圖層,然後開始繪製平鋪視圖。

當你通過PDF頁面移動就像,每一頁是先用一個非常形象不佳代表,但它足以看出內容佈局,當你停在某個頁面此頁面變得更加清晰。

我知道我可以在catiledlayer上添加子圖層,但是我無法在catiledlayer後面添加任何圖層,因爲這是一個圖層。我也相信在同一圖層上加載背景圖像以便可以適當縮放非常重要。

有沒有人一個想法如何實現這一目標?

+0

有一個圖層加載較低質量的圖像作爲主圖層並將高分辨率圖層放在頂部? – WolfLink

回答

1

我終於弄清楚這一點,並感謝名單的關鍵評論。

你要做的:

  1. 所有功能drawLayer內的動態加載邏輯創建CATiledLayer的子類:inContext的: - 這個功能是一樣的drawRect:查看
  2. 內初始化新的子類CATiledLayer
  3. 低分辨率圖像初始化新的CALayer
  4. 創建新的UIView * MyView的= [UIView的...]或UIImageView的(取決於你的需求)
  5. 把兩層myVi ew.layer As子層

UIView *imageView = [[UIView alloc] initWithFrame:viewFrame]; 

DCTiledLayer *tiledLayer = [[DCTiledLayer alloc] initWithData:myData]; 

CALayer *lowResLayer = [CALayer layer]; 
lowResLayer.position = CGPointMake(CGRectGetMidX(viewFrame), CGRectGetMidY(viewFrame)); 
lowResLayer.bounds = viewFrame; 
lowResLayer.contents = (id)[lowResImage CGImage]; 

[imageView.layer addSublayer:lowResLayer]; 
[imageView.layer addSublayer:tiledLayer]; 

它的工作原理就像一個魅力。 :)