2017-01-17 2 views
0

에 interitem 간격을 감소 내가 이미 보았다 : -이 UICollectionView

Decrease Space between UICollectionViewCells

Cell spacing in UICollectionView

UICollectionView distance between cells?하지만 그들 중 누구도 나를 위해 일하지 않는다.

나는 또한 UICollectionViewDelegateFlowLayout을 구현하는 시도

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { 
    return 3 
} 

을 구현하지만, 그것은에 영향을주지 않습니다.

아이폰 7/아이폰 5S/아이폰 7 플러스 취한 다음 스크린 샷에서 참조하시기 바랍니다 또한

iPhone 7

iPhone 5S

iPhone 7 Plus

내가 (사진 순서는 동일합니다) 셀프 크기 조정 셀을 보았지만 셀프 크기 조정 셀을 원하지 않습니다. 항목 크기가 항상 고정되어 있고 내 요구 사항을 충족시키기 때문입니다.

스토리 보드에서의 셀 간격 최소 간격을 으로 설정했지만 레이아웃에는 아무런 영향이 없습니다.

두 개의 셀 사이에 큰 간격 (중간 간격)을 줄이는 방법은 iPhone 5S에서 클리핑이 발생하지 않도록하고 iPhone 7 Plus의 오른쪽 공백을 피하십시오 (배경이 보이지 않기 때문에 볼 수 없습니다). 흰색)

어떤 통찰력을 주시면 감사하겠습니다.

+0

http://stackoverflow.com/a/40261279/4601170 –

답변

3

세포 크기가 "고정"인 경우 고정 폭을 하드 코드했기 때문에 간격을 피할 수 없습니다!

collectionView.frame의 전체 너비를 계산하고 2로 나눠야하고 "고정 된"크기가 아니라 항목 사이의 간격도 포함해야합니다. 빠른 입력 된 예 :

(cellsize을 계산) sizeForItemAtIndexPath 방법에서 각 셀의 widthheight을 설정하는

CGFloat spacing = 3.0f 
CGFloat itemWidth = collectionView.frame.size.width/2 - spacing 
CGSize totalSize = itemWidth, itemWidth 
+0

나는 이것을 시도하고 다시 연락 할 것이다. 고마워, 대답은 대단히 논리적 인 것처럼 보인다. –

+0

@DarkInnocence Np, 나는 당신이 스크린 샷처럼 셀 뷰를 위해 autolayout을 사용할 것을 강력히 제안한다. 그래서 smalleR/큰 스크린을 가지고 있다면 디자인을 완벽하게 유지할 것이다. –

+0

매력처럼 작동 : D !! 정말 고맙습니다. Btw, 자동 레이아웃이 이미 구현되었습니다. –

0

보십시오.

- (CGSize)collectionView:(UICollectionView *)collectionView 
        layout:(UICollectionViewLayout *)collectionViewLayout 
    sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGRect screenRect = [[UIScreen mainScreen] bounds]; 
    CGFloat screenWidth = screenRect.size.width; 
    float cellWidth = screenWidth/2.0; //Replace the divisor with the column count requirement. Make sure to have it in float. 

    CGFloat screenHeight = screenRect.size.height; 
    screenHeight = screenHeight - 114.0; // Sum of Bottom View & Top View Height 

    float cellHeight = screenHeight /(totalArray.count/2); //totalArray contains item used to show in collectionview 

    if(DEFAULT_CELL_HEIGHT > cellHeight){ 
     cellHeight=DEFAULT_CELL_HEIGHT; 
    } 

    CGSize size = CGSizeMake(cellWidth, cellHeight); 

    return size; 
} 
0

@ Hauzin의 답은 다른 장치에서 간격을 제거하는 것이 좋습니다. 셀 사이의 간격 (minimumInteritemSpacingForSectionAt)을 보려면이 프로토콜 (UICollectionViewDelegateFlowLayout)을 준수하는보기 컨트롤러를 만들었습니까?

+0

네, 저의 질문에 이미 언급했습니다. –

+0

예, 거기에서 메소드를 구현했습니다. 그러나 당신이 코드에서 그 프로토콜을 정말로 준수했는지 묻습니다. 'MyViewController : UIViewController, UICollectionViewDelegateFlowLayout' –

+0

그래, 그랬어. Hauzin의 솔루션을 사용하기 전에 잘못된 너비 (하드 코드 된 너비) –