>

컬렉션 뷰로 시각적 인 아름다움을 원하지만 정렬 문제가 발생했습니다. 나는 당신과 공유합니다. 페이지가 처음로드 될 때 아무런 문제가 없습니다.

컬렉션 뷰로 스크롤하면 약간의 변화가 있습니다.

컬렉션 뷰가 옆으로 이동하고 정렬 정렬이 변경되지 않았지만 해결책을 찾기 위해 매우 열심히 노력했습니다. 내 코드를 당신과 공유합니다.

   override func awakeFromNib() {
    super.awakeFromNib()
    self.celloectionCat.delegate = self
    self.celloectionCat.dataSource = self
    self.celloectionCat?.register(UINib(nibName: "mycell", bundle: nil), forCellWithReuseIdentifier: "mycell")
    self.celloectionCat.showsHorizontalScrollIndicator = false
    self.celloectionCat.showsVerticalScrollIndicator = false
    self.celloectionCat.isPagingEnabled = true;
    self.celloectionCat.alwaysBounceVertical = false
}

extension Cell : UICollectionViewDelegateFlowLayout{
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsets(top: 0, left: 15, bottom: 0, right: 15)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let padding: CGFloat =  45.0
    let hpadding: CGFloat = 15.0
    let collectionViewWidthSize = collectionView.frame.size.width - padding
    let collectionViewHeightSize = collectionView.frame.size.height - hpadding
    return CGSize(width: collectionViewWidthSize / 2   , height: collectionViewHeightSize / 2  )
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 15
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 15
}
}

  • 답변 # 1

    이 기능은 페이징이 활성화 된 경우 컬렉션보기가 컬렉션보기 크기의 배수로 콘텐츠보기를 중지하기 때문입니다.

    문제에 대한 한 가지 접근 방식은 셀을 섹션, 특히 페이지 당 하나의 섹션과 섹션 당 최대 4 개의 셀로 분할하는 것입니다. 섹션 삽입을 올바르게 설정하면 하나의 섹션이 컬렉션보기의 크기가되고 셀이 섹션 중앙에 정렬됩니다.

    여기에 약간의 변경 사항이있는 코드가 있습니다. 하드 코딩 된 숫자를 사용했지만 코드에서이를 반대하는 것이 좋습니다 (또한 셀 크기 계산을 sizeForItem 메서드 밖으로 이동하는 것이 좋습니다.이 방법은 여러 번 호출되지만 크기는 변경되지 않습니다).

    @IBOutlet weak var collectionView: UICollectionView! {
        didSet {
            collectionView.dataSource = self
            collectionView.delegate = self
            collectionView.showsHorizontalScrollIndicator = false
            collectionView.showsVerticalScrollIndicator = false
            collectionView.isPagingEnabled = true
        }
    }
    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 10
    }
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 4
    }
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell identifier", for: indexPath)
        // setup your cell
        return cell
    }
    
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let padding: CGFloat =  45.0
        let hpadding: CGFloat = 15.0
        let collectionViewWidthSize = collectionView.frame.size.width - padding
        let collectionViewHeightSize = collectionView.frame.size.height - hpadding
        return CGSize(width: collectionViewWidthSize / 2   , height: collectionViewHeightSize / 2  )
    }
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
        return UIEdgeInsets(top: 0, left: 15, bottom: 0, right: 15)
    }
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat
    {
        return 15
    }
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
        return 15
    }
    
    

  • 이전 UWP 드래그 앤 드롭 글리프 및 캡션 제거
  • 다음 R에서 희소 행렬 만들기