0
사용자 지정 하위 클래스가 UICollectionViewFlowLayout
인데 항상 셀 너비를 화면 너비로 업데이트하려고합니다. 가로로 회전하면 셀이 제대로 업데이트되지 않습니다. 여기UICollectionViewFlowLayout 하위 클래스의 셀 너비 업데이트 문제
// MARK: - Constants
private let EdgeInset: CGFloat = 10
private let CellSpacing: CGFloat = 10
private let LineSpacing: CGFloat = 10
private let CellHeight: CGFloat = 50
// MARK: - FullWidthLayout
class FullWidthLayout: UICollectionViewFlowLayout {
override init() {
super.init()
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
func commonInit() {
minimumLineSpacing = LineSpacing
minimumInteritemSpacing = CellSpacing
sectionInset = UIEdgeInsets(top: EdgeInset, left: EdgeInset, bottom: EdgeInset, right: EdgeInset)
}
}
// MARK: Layout Methods
extension FullWidthLayout {
override func prepare() {
super.prepare()
if let view = collectionView {
let availableWidth = view.bounds.width - EdgeInset * 2
itemSize = CGSize(width: availableWidth, height: CellHeight)
print("Item size: \(itemSize)")
}
}
}
콘솔의 출력은 다음과 같습니다 :
Item size: (300.0, 50.0)
Item size: (548.0, 50.0)
그리고 여기 시뮬레이터에서 일어나고있는 작업은 다음과 같습니다
항목 크기는 여기 내 서브 클래스입니다 올바르게 설정되어있는 것 같습니다. prepare()
메서드이지만 셀이 컬렉션 뷰에서 업데이트되지 않습니다. 가로 모드에서 시작하여 세로 모드로 이동하면 예외가 발생합니다.
내가 누락 된 자료가 있습니까? 어떤 경우에는베이스 UICollectionViewFlowLayout
이 itemSize
을 무시합니까? 여기
의 개인적인. 레이아웃이 자체 항목 크기를 설정할 수 있어야합니다. – Mark