2010-09-17 80 views
1

我試圖創建一個包含多行和多列圖像視圖的網格視圖。就像4行4列的視圖一樣,每個單元格包含圖像視圖。任何人都可以告訴我創建這種視圖的最佳方法嗎? 感謝和最好的問候...關於網格視圖的建議

回答

1

我是通過UITableView完成的。我做了一個自定義的UITableViewCell,每個單元格包含4個按鈕,用於4列,並調整每個單元格的高度,每頁4行。

2

我會使一個GridView對象從UIView降序。這將有numberOfColumns財產和物品屬性:

@class GridView : UIView { 
    NSUInteger numberOfColumns; 
    NSArray *items; 
} 

@property (nonatomic, assign) NSUInteger numberOfColumns; 
@property (nonatomic, copy) NSArray *items; 

@end 

項陣列將包含你想你的網格視圖中顯示的UIViews。

然後,每次設置numberOfColumns屬性或items屬性時,也可以調用[self setNeedsLayout];在他們的二傳手,即在項目屬性你刪除舊的,添加新的和告知框架需要重新佈局

- (void)setItems:(NSArray *)value { 
    if (value != items) { 
     for (UIView *item in items) 
      [item removeFromSuperview]; 
     [items release]; 

     items = [value copy]; 
     for (UIView *item in items) 
      [self addsubview:item]; 

     [self setNeedsLayout]; 
    } 
} 

你layoutSubviews方法將通過項目陣列迭代,他們在正確的位置列數,即像

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    CGFloat width = [slef frame].size.width/numberOfColumns; 
    CGFloat height = width; 
    CGFloat xoffset = 0; 
    CGFloat yoffset = 0; 

    for (UIBView *item in items) { 
     [item setFrame:CGRectMake(xoffset, yoffset, width, height)]; 
     xoffset += width; 
     if (xoffset >= [self frame].size.width) { 
      xoffset = 0; 
      yoffset += height; 
     } 
    } 
} 

我沒有測試的代碼,但它應該打好項目出一個方格,每個項目是方形的。

希望這是一個很好的起點。