3

我正在尝试在我的 iPad 应用程序中实现AQGridView 。请看我下面的图片——对于强烈的颜色很抱歉,但我认为它会帮助你理解我的问题。

每个单元格(蓝色框)左右都有一个边距(黄色),即 8 个像素。这意味着第一个黄色 coloum 的宽度为 8px,第二个为 16px,第三个为 16px,最后一个为 8px。在某些情况下这可能很好,但我希望黄色列具有相同的宽度。在我的示例中,列的总宽度为 48 (8+16+16+8),因此我希望每列的宽度为 12 (48/4)。我怎样才能改变AQGridView来做到这一点?

我试图改变框架反弹AQGridView ,但这并没有做任何事情。

AQGridView

4

2 回答 2

6

AQGridView 实际上获取容器视图的坐标并从中创建一个严格定义的网格。因此,当您有一个 768 像素宽的网格视图,以及宽度略低于该宽度 1/3 的项目时,它将创建一个刚性网格来放置这些项目。默认情况下,您的AQGridViewCell视图将在每个网格正方形内居中(尽管您可以调用-setResizesCellWidthToFit:YES更改它);-gridView:adjustCellFrame:withinGridCellFrame:您可以通过在您的实施中实施来调整该定位AQGridViewDelegate

在您的情况下,每个单元格的左侧和右侧都有 8px 的边距。在外边缘,这是单独看到的,但在成对之间,它看起来加倍到 16 像素(每个单元格为 8 像素)。

那么,您想要的是每个单元格有 6px 的边距,并且网格本身在所有单元格的左右两侧有另外 6px 的边距空间。有一个 API

@property (nonatomic, assign) CGFloat leftContentInset;
@property (nonatomic, assign) CGFloat rightContentInset;

你应该能够做的是设置myGridView.leftContentInset = 6.0;myGridView.rightContentInset = 6.0;。然后,网格视图将布置内容宽度为 756 像素而不是 768 像素的单元格,这应该为每个单元格周围提供 6 像素的边距。将其与 6px 的左右内容插图相结合,您将在每个单元格网格视图的外边缘之间有一个干净的 12px 可见边距。

旁注:内容插入属性实际上是为了帮助每行布置一定数量的单元格而创建的。例如,1024 不会被 5 整除,因此它最终可能会导致一些相当小的单元格非常分散,因为布局网格仅包含 4 个宽度的项目。但是,通过添加每个 2px 的左右内容插入,视图将使用 1020 的宽度来计算其布局网格,从而导致每行 5 个单元格。事实上,这正是我们在 Kobo iPad 应用程序中旋转到横向模式时所做的事情;如果没有这种变化,我们的纵向模式每行 4 个项目就会分散开来,看起来有点太稀疏了。

于 2012-02-27T21:30:31.023 回答
0

通过使用该方法,我设法获得了对水平和垂直间距的更多控制,并且与我在该方法中用于初始化单元格的方法相比portraitGridCellSizeForGridView,返回了一个稍大的值。CGRectgridView:cellForItemAtIndex:

我希望这有帮助。

于 2012-04-01T16:18:24.637 回答