关于网格视图的建议

问题描述:

我试图创建一个包含多行和多列图像视图的网格视图。就像4行4列的视图一样,每个单元格包含图像视图。任何人都可以告诉我创建这种视图的最佳方法吗? 感谢和最好的问候...关于网格视图的建议

我是通过UITableView完成的。我做了一个自定义的UITableViewCell,每个单元格包含4个按钮,用于4列,并调整每个单元格的高度,每页4行。

我会使一个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; 
     } 
    } 
} 

我没有测试的代码,但它应该打好项目出一个方格,每个项目是方形的。

希望这是一个很好的起点。