2015-06-11 38 views
0

我正在Xcode 6平鋪與許多UIImageViews的iPhone背景,我想知道這是否是最有效的解決方案。如何有效地使用代碼與UIImageViews平鋪背景?

我知道一個簡單的解決方案是在故事板中創建圖像視圖,並用手動方式覆蓋整個屏幕。我想用代碼來做。下面是我當前的代碼(5×5是一個不錯的大小,因爲我可以擴展它向上或向下變大或更大的圖像,以填補屏幕):

CGRect tiles[5][5]; 
UIImage *tileImages[5][5]; 
UIImageView *tileViews[5][5]; 

for(int i=0;i<5;i++) 
{ 
    for(int j=0;j<5;j++) 
    { 
     tiles[i][j] = CGRectMake(50*i,50*j,50,50); 
     tileImages[i][j] = [UIImage imageNamed:@"tile.png"]; 
     tileViews[i][j] = [[UIImageView alloc] initWithFrame:tiles[i][j]]; 
     tileViews[i][j].image = tileImages[i][j]; 
     [self.view addSubview:tileViews[i][j]]; 
    } 
} 

目前所有圖像都是一樣的,但是從長遠拖延我會讓他們依賴於各種因素。

我讀過,我知道UIImageViews是挑剔的。這是用UIImageViews平鋪背景的正確和高效的方法嗎?有一個更好的方法嗎?我可以在瓷磚初始化後手動進入,並更改正在顯示的圖像並實時更新它嗎?

tileView[1][2].image = [UIImage imageNamed:@"anotherTile.png"]; 

在此先感謝,我剛剛結束在IOS編程基礎6周的課程,在我的大學,所以我還是發覺自己偶爾安撫Objective C的神。

回答

0

我想我的懷疑將是爲什麼你需要他們是圖片意見。在視圖或圖層中繪製圖像非常簡單,並且在網格中排列視圖或圖層非常簡單;什麼是圖片意見,當你沒有真正使用或需要任何圖像瀏覽的力量?

我有顯示平鋪圖像的幾個應用程序 - 一個示出99瓶在一個網格,一個示出的瓦片「片」在配對用戶抽頭以關閉他們的網格,一個示出了矩形的拼圖塊的一個網格,用戶滑動以交換它們並使它們按照正確的順序進行交換,並且顯示用戶以三元組形式匹配它們的「卡片」的網格 - 並且在這些情況下,我使用圖像視圖的沒有。其中之一是CALayers;在其他情況下,它們是自定義的UIView子類;但在任何情況下我都不會使用UIImageViews。

對於像網格圖像那樣簡單的事情來說,使用UIImageViews看起來像你所暗示的那樣,過度殺傷。如果你使用UIImageViews的原因是你不知道如何讓UIView或CALayer畫出它的內容,我想說,在你繼續之前,停下來學習如何做。

+0

我不知道有更簡單的方法來做到這一點。非常感謝!你知道有什麼好的資源可以用來學習如何用UIView或CALayer做到這一點嗎? –

+0

呃... http://www.apeth.com/iOSBook/ch15.html – matt

+0

非常感謝。我最終將所有東西都分類出來,並且在閱讀了您提供的鏈接後,我決定構建一個圖像上下文,在雙循環中填充圖像,然後將圖像上下文發送到單個UIImageView以顯示在主視圖上。這大大減少了我的內存使用,現在我的應用程序不會滯後! –