我正在尝试在我的iPad应用中实现AQGridView。请看下面的图片 - 抱歉颜色很强,但我认为这有助于您了解我的问题。
每个单元格(蓝色框)具有左右边距(黄色),即8个像素。这意味着第一个黄色的coloum宽度为8px,第二个为16px,第三个为16px,最后一个为8px。在某些情况下这可能很好,但我希望黄色列具有相同的宽度。在我的例子中,列的总宽度是48(8 + 16 + 16 + 8),所以我希望每列的宽度为12(48/4)。如何更改 AQGridView 来执行此操作?
我尝试更改框架和反弹 AQGridView ,但这没有做任何事情。
答案 0 :(得分:6)
AQGridView实际上获取容器视图的坐标,并从中创建严格定义的网格。因此,如果您有一个768px宽的网格视图,以及宽度略小于1/3的项目,那么它将创建一个刚性网格来放置这些项目。默认情况下,您的AQGridViewCell
视图将在每个网格方框中居中(尽管您可以调用-setResizesCellWidthToFit:YES
来更改它);您可以通过在-gridView:adjustCellFrame:withinGridCellFrame:
实施中实施AQGridViewDelegate
来调整该定位。
在您的情况下,每个单元格的左侧和右侧的边距为8px。在外边缘,这是单独看到的,但在两对之间,它看起来加倍到16px(每个单元格8px)。
然后,您希望每个单元格具有6px的边距,并且网格本身在左侧和左侧具有另外6px的边距空间。所有细胞的权利。有an API for this:
@property (nonatomic, assign) CGFloat leftContentInset;
@property (nonatomic, assign) CGFloat rightContentInset;
您应该可以设置myGridView.leftContentInset = 6.0;
和myGridView.rightContentInset = 6.0;
。然后,网格视图将布置内容宽度为756px而不是768px的单元格,这样可以在每个单元格周围提供6px的边距。将其与6px左和右相结合。正确的内容插入,你将在每个单元格和网格视图的外边缘之间有一个干净的12px可见边距。
旁注:实际创建了内容插入属性,以帮助每行布置一定数量的单元格。例如,1024不会除以5,因此最终会有一些相当小的单元格被分散,因为布局网格的宽度只包含4个项目。但是,通过添加左和右每个2px的右内容插入,视图将使用1020的宽度来计算其布局网格,从而导致每行5个单元格。事实上,这正是我们在旋转到横向模式时在Kobo iPad应用程序中所做的事情;如果没有这个改变,我们的肖像模式每行4个项目就会分散开来。它看起来有点太稀疏了。
答案 1 :(得分:0)
我设法通过使用portraitGridCellSizeForGridView
方法获得对水平和垂直间距的更多控制,并返回稍微大的CGRect
,而不是我用来初始化{{1}中的单元格的gridView:cellForItemAtIndex:
方法。
我希望这会有所帮助。