我正在尝试创建一个包含多行和多列图像视图的网格视图。像4行4列的视图,每个单元格包含图像视图。任何人都可以告诉我创建这种观点的最佳方法吗? 谢谢,最诚挚的问候......
答案 0 :(得分:2)
我从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;
}
}
}
我没有测试过该代码,但它应该将项目放在网格中,每个项目都是正方形。
希望这是一个很好的起点。
答案 1 :(得分:1)
我是通过UITableView做到的。我制作了一个自定义的UITableViewCell,每个单元格包含4个4列的按钮,并调整每个单元格的高度,每页4行。