2017-04-21 5 views
-1

각 셀의 텍스트 양에 따라 크기가 다른 셀을 사용하여 가로 방향 UICollectionView를 만들려고합니다. 아래 코드를 사용하여이 작업을 수행 할 수 있었지만 이제는 셀 사이에 여분의 간격이 생깁니다. 내 minimumLineSpacingForSectionAt는 이미 0을 반환하고 음수를 반환하려고 시도했지만 어느 것도 작동하지 않습니다. 누구든지 여분의 공간이 왜 생겨나고 그것을 제거하는 방법을 알고 있습니까?UICollectionView 크기에 대한 변수를 사용하여 CGSize를 반환하면 셀 사이에 원하지 않는 여분의 간격이 발생합니다.

참고로, 내 셀 안에는 셀의 전체 크기에 제약이있는 1 개의 UILabel이 있습니다.

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 

    var stringWidth: CGFloat = 100 
    //Finding and setting feedMenuCellWidth 
    if let groupName = groups[indexPath.item].name { 
     var originalString: String = groupName 
     let myString: NSString = originalString as NSString 
     let size: CGSize = myString.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 17.0)]) 
     stringWidth = size.width 
    } 
    //Returning CGSize 
    return CGSize(width: stringWidth + 20, height: frame.height) // with standard width 
} 


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

답변

0

최소 interitem 간격 그냥 여분의 공간이있는 경우, 그 최소하지만, UICollectionViewFlowLayout이 항목 사이에 분배이다. UICollectionViewFlowLayout 인 콜렉션 뷰와 함께 제공되는 기본 UICollectionViewLayout을 사용하는 대신 UICollectionViewLayout이라는 구체적인 인스턴스를 만들어야합니다. 그런 다음 UICollectionViewFlowLayout과 같은 요소간에 배포하는 대신 추가 공간을 모두 왼쪽이나 오른쪽에 할당 할 수 있습니다 않습니다.