Iphone 关于网格视图的建议

Iphone 关于网格视图的建议,iphone,grid,Iphone,Grid,我正在尝试创建一个包含多行和多列图像视图的网格视图。类似于4行4列的视图,每个单元格包含一个图像视图。有谁能告诉我创建这种视图的最佳方法吗? 谢谢并致以最诚挚的问候……我将从UIView中创建一个GridView对象。这将具有numberOfColumns属性和items属性: @class GridView : UIView { NSUInteger numberOfColumns; NSArray *items; } @property (nonatomic, assign

我正在尝试创建一个包含多行和多列图像视图的网格视图。类似于4行4列的视图,每个单元格包含一个图像视图。有谁能告诉我创建这种视图的最佳方法吗?
谢谢并致以最诚挚的问候……

我将从UIView中创建一个GridView对象。这将具有numberOfColumns属性和items属性:

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

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

@end
items数组将包含要在网格视图中显示的UIView

然后,每次设置numberOfColumns属性或items属性时,也调用[self-setNeedsLayout];在他们的setter中,即对于items属性,您将删除旧的,添加新的,并告诉框架您需要重新部署

- (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方法将遍历items数组,并将它们放置在正确的列数中,例如

- (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;
        }
    }
}
我还没有测试过该代码,但它应该将项目放在一个网格中,每个项目都是正方形的


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

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