2011-06-27 63 views
0

我正在製作一個遊戲,其中x乘y的網格視圖很大。我想要做的是能夠以編程方式創建網格。以編程方式創建UIViews網格(或具有視圖的任何對象)

我有這方面的想法。

int across = x 
int down = y 
CGRect dimentions = foo, bar //etc 
int distanceBetween = z 
///some crazy loop to make it 

如果可能的話我也想保持對每個參考,最好通過指定標籤,以便以後可以操縱他們..

乾杯

小號

回答

2

我想這應該做的伎倆

int across = x 
int down = y 
CGSize dimensions; // make a cgsize here with the correct values 
int distanceBetween = z; 
NSMutableArray *views = [[NSMutableArray alloc] init]; 

for (int x = 0; x < across; x++) { 
    NSMutableArray *downViews = [[NSMutableArray alloc] init]; 
    for (int y = 0; y < down; y++) { 
    UIView *view; //create view using the dimensions and padding 
    //any additional setup to the views 
    [downViews addObject:view]; 
    } 
    [views addObject:downViews]; 
    [downViews release]; 
} 
0

基本上它只是可以設置網格大小,然後從那裏計算x和y位置。
它應根據幀大小計算出有多少列。所以如果框架變寬了,它會顯示更多的列。不知道你是否需要它是獨立的決議,但我已經把它放在那裏。

如果您需要網格中的一定數量的列,那麼只需將gridColumns更改爲固定整數。

float gridItemWidth = 225.00; 
float gridItemHeight = 225.00; 

-(int)gridColumns { 
    NSRect frame = [self frame]; 
    return (int)frame.size.width/(gridItemWidth); 
}  

-(int)getxOffset:(int)i { 
    int xPadding = 10; 
    return ((i % [self gridColumns]) * (gridItemWidth + xPadding)); 
} 

-(int)getyOffset:(int)i { 
    int yPadding = 20; 
    return (floor(i/[self gridColumns]) * (gridItemHeight + yPadding)); 

} 

然後在你的循環基本上你叫getxOffset和getyOffset你的循環,以獲得電網的位置的索引。
我已經手動將x和y填充設置爲10和20,但您可以將它們設置爲任何需要的值。

+0

這兩個答案的組合的伎倆 雖然我這樣做是爲y偏移 INT結果=((我%下調)*(gridItemHeight + yPadding )); 然後返回。 –