Bất kỳ ý tưởng nào để giải quyết sự kiện UICollectionView của tôi gặp sự cố khi cuộn chế độ xoay?UICollectionView gặp sự cố khi cuộn chế độ xoay (thuộc tính bố cục cho mục bổ sung tại đường dẫn chỉ mục đã thay đổi mà không làm mất hiệu lực ..)
Tôi đang sử dụng cách tiếp cận sau để cuộn và xoay riêng và mỗi cách có vẻ hoạt động tốt. Tôi vừa mới lưu ý khi làm cả hai việc cùng một lúc, tôi có thể bị tai nạn này. Vì vậy, nó có vẻ là một cái gì đó để làm với thực tế khi tôi xoay thiết bị và các thuộc tính bố trí mới đang được tính toán trong preparLayout, rằng việc di chuyển liên tục đang kích hoạt "invalidateLayoutWithContext (invalidContext)" (xem bên dưới).
Ý tưởng? Có cách nào để đặt bất kỳ phản ứng di chuyển nào đang giữ (hoặc bỏ qua chúng) trong khi quay không?
Rotation Cách tiếp cận Trong viewWillLayoutSubviews trong bộ điều khiển xem tôi làm mất hiệu lực toàn bộ bố trí
self.cal.collectionViewLayout.invalidateLayout()
cuộn tiếp cận Để cho phép tôi có một "dính" điểm trang trí (tiêu đề) Tôi không vô hiệu hóa toàn bộ bố cục, vì nó làm giảm hiệu suất, nhưng làm như sau. Trong lớp học bố trí tôi ghi đè shouldInvalidateLayoutForBoundsChange
override func shouldInvalidateLayoutForBoundsChange(newBounds: CGRect) -> Bool {
let invalidContext : UICollectionViewLayoutInvalidationContext = self.invalidationContextForBoundsChange(newBounds)
// Keep Header Sticky
invalidContext.invalidateDecorationElementsOfKind(GCCalendarLayoutKind_Decorative1, atIndexPaths: [headerDecorativeIndexPath])
// Apply Invalidation
self.invalidateLayoutWithContext(invalidContext)
// Return normal super return (just in case of future IOS upgrades)
return super.shouldInvalidateLayoutForBoundsChange(newBounds)
}
Lưu ý ở đây tôi đang vô hiệu các trang trí View (tiêu đề), trong khi lỗi với các vụ tai nạn là về quan điểm bố trí bổ sung của tôi là khác nhau.
Lỗi
2015-10-30 07: 14: 30,181 test3_collectionview [17.086: 3.102.132] * thất bại Assertion trong - [UICollectionViewData validateLayoutInRect:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.29.5/UICollectionViewData.m: 408 2015-10-30 07: 14: 30.185 test3_collectionview [17086: 3102132] * Chấm dứt ứng dụng do ngoại lệ không bị bắt 'NSInternalInconsistencyException ', lý do:' thuộc tính bố cục cho mục bổ sung tại đường dẫn chỉ mục ({length = 2, path = 0 - 0}) đã thay đổi từ chỉ số đường dẫn: ({length = 2, path = 0 - 0}); phần tử loại: (Decorative1); frame = (0 1085.5; 320 16); zIndex = 1; đến chỉ mục đường dẫn: ({length = 2, path = 0 - 0}); phần tử loại: (Decorative1); frame = (0 853.5; 320 16); zIndex = 1; mà không hủy bỏ hiệu lực bố trí' *** Đầu tiên gọi ném stack:
Nếu bạn không ghi đè phương thức 'shouldInvalidateLayoutForBoundsChange', sự cố có tiếp tục xảy ra không? – Lefteris
@Loại bỏ sự cố không xảy ra trong trường hợp này, tuy nhiên tôi không chắc chắn làm cách nào để đạt được những gì tôi theo sau mà không ảnh hưởng đến hiệu suất collectionView (nghĩa là không chắc chắn sau đó cách sử dụng phương thức invalidateLayoutWithContext) – Greg