2012-02-26 3 views
3

내 iPad 응용 프로그램에 AQGridView을 구현하려고합니다. 내 아래 이미지를 보아라. - 강한 색상에 대해 유감스럽게 생각하지만, 내 문제를 이해하는 데 도움이 될 것이라고 생각한다.AQGridView : UIGridViewCell 여백 조정 방법

각 셀 (파란색 상자)의 좌우 여백 (노란색)은 8 픽셀입니다. 즉, 첫 번째 노란색 coloum 너비가 8px, 두 번째 16px, 세 번째 16px 및 마지막 8px 있습니다. 어떤 상황에서는 괜찮을 지 모르지만 노란색 열의 너비가 같아지기를 바랍니다. 필자의 예에서는 열의 총 너비가 48 (8 + 16 + 16 + 8)이므로 각 열의 너비가 12 (48/4)가되도록 싶습니다. 어떻게하면 AQGridView을 변경할 수 있습니까?

나는 프레임을바운스AQGridView을 변경하려고했습니다,하지만 아무것도하지 않았다.

AQGridView

답변

6

AQGridView는 실제로 컨테이너의 뷰의 좌표를 취하고 그으로부터 엄격히 정의 격자를 생성한다. 따라서 너비가 768px 인 그리드 뷰와 그 너비의 1/3보다 작은 아이템을 가지고있을 때,이 아이템을 배치 할 고정 그리드를 생성 할 것입니다. 기본적으로 AQGridViewCell 개의보기는 각 격자 사각형의 가운데에 표시됩니다 (변경하려면 -setResizesCellWidthToFit:YES이라고 할 수 있지만). AQGridViewDelegate 구현에 -gridView:adjustCellFrame:withinGridCellFrame:을 구현하여 위치를 조정할 수 있습니다.

모든 단일 셀의 왼쪽 및 오른쪽 여백은 8px입니다. 바깥 쪽 가장자리에서는 이것이 보이지만 쌍 사이에는 16px (각 셀에서 8px)로 두 배로 나타납니다.

그러면 원하는 것은 각 셀에 6px 여백이 있고, 그리드 자체에는 왼쪽에 여백 공간 여섯px가있는 것입니다. 모든 셀의 오른쪽에 &입니다. 이 an API for this입니다 : 당신이 할 수있을 것입니다 무엇

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

myGridView.leftContentInset = 6.0;myGridView.rightContentInset = 6.0; 설정됩니다. 그리드보기는 콘텐츠 너비가 768px가 아닌 756px 인 셀을 배치하여 각 셀 주위에 6px 여백을 지정해야합니다. 이를 6px 왼쪽 콘센트 인 &과 결합하면 모든 셀 사이의 깨끗한 12 픽셀의 여백이 눈금보기의 바깥 쪽 가장자리에 나타납니다.

사이드 노트 : 콘텐츠 삽입 속성은 실제로 행당 특정 셀 수를 배치하는 데 도움이되도록 작성되었습니다. 예를 들어, 1024는 5로 나누지 않으므로, 레이아웃 그리드는 너비가 4 개의 항목만을 포함하기 때문에 꽤 작은 셀이 꽤 퍼져 나갈 수 있습니다. 그러나 왼쪽에 각각 & 개의 콘텐츠 삽입물을 2 픽셀 씩 추가하면보기가 너비 1020을 사용하여 레이아웃 격자를 계산하므로 행당 5 개의 셀이 생성됩니다. 이것은 사실 풍경 모드로 회전 할 때 Kobo iPad 앱에서하는 것과 정확히 같습니다. 그 변화가 없다면 우리의 인물 사진 모드의 4 개 항목이 방금 확산되었습니다 & 너무 희박 해 보입니다.

+1

철저한 답변 주셔서 감사합니다. 'leftContentInset'과'rightContentInset' 속성을 사용하여 고정 된 여백 공간을 좌우로 유지하면서 문제를 해결했습니다. GridView 또는 다른 것의 경계를 변경하는 것과 같은 좀 더 일반적인 해결책이라고 생각 했으므로이 질문에서 언급하지 않은 것은 맨 위와 맨 아래에서 동일한 작업을 수행하는 방법이었습니다. 그 해결책이 있습니까? – dhrm

+1

예) AQGridView를 상위 뷰에서 약간 삽입합니다. o) 또는 위의 왼쪽 및 오른쪽 정렬과 마찬가지로 상단 및 하단 삽입을 지정하는 격자보기 자체에 UIEdgeInsets 속성이 있다고 생각합니다. –

0

portraitGridCellSizeForGridView 메서드를 사용하고 gridView:cellForItemAtIndex: 메서드에서 셀을 초기화하는 데 사용한 것보다 약간 큰 CGRect을 반환하면 가로 및 세로 간격을 더 많이 제어 할 수있었습니다.

이 정보가 도움이되기를 바랍니다.