AQGridView фактически принимает координаты зрения контейнера и создает строго определенную сетку из этого. Поэтому, когда у вас есть сетка с разрешением 768 пикселей и элементы, которые немного меньше 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;
. Затем в виде сетки выкладываются ячейки с шириной содержимого 756 пикселей вместо 768 пикселей, что должно дать вам 6 пикселей по каждой ячейке. Объедините, что с 6px оставил & правые вставки содержимого, и у вас будет чистый видимый запас 12px между каждой ячейкой и внешними краями сетки.
Боковое примечание: Свойства вставки содержимого были созданы, чтобы помочь с выделением определенного количества ячеек в строке. Например, 1024 не делит на 5, так что это может привести к тому, что некоторые довольно маленькие ячейки будут довольно разбросаны, поскольку сетка макета будет содержать только 4 элемента по ширине. Однако, добавив левые & правые вставки содержимого по 2 пикселя каждый, представление будет использовать ширину 1020 для вычисления его сетки макета, в результате чего 5 ячеек в строке. Фактически, это именно то, что мы делаем в приложении iPad Kobo при повороте в ландшафтном режиме; без этого изменения наш портретный режим 4 пункта на строку только что разбросал &, это выглядело немного редкими.
Спасибо за ваш тщательный ответ. Использование свойств 'leftContentInset' и' rightContentInset' решило мою проблему, обеспечив фиксированное поле маржа слева и справа. То, о чем я не упоминал в вопросе, поскольку я думал, что это будет более общее решение (например, изменение границ GridView или что-то еще), было как сделать то же самое сверху и снизу. У вас есть решение для этого? – dhrm
Yep-inset AQGridView немного в своем родительском представлении; o) В качестве альтернативы, я думаю, что теперь есть свойство UIEdgeInsets на самом экране сетки, которое поддерживает назначение верхних и нижних вложений так же, как слева и справа сверху. –