Tôi đang sử dụng Xcode 6 Beta 3, SDK iOS 8. Xây dựng mục tiêu iOS 7.0 bằng Swift. Vui lòng tham khảo vấn đề của tôi từng bước với ảnh chụp màn hình bên dưới.
Tôi có một UICollectionView trong Storyboard. 1 Nguyên mẫu UICollectionViewCell chứa 1 nhãn ở giữa (không có quy tắc tự động hóa). Nền màu tím là để đánh dấu một nội dung được tạo trong thời gian chạy bởi Ô tôi đoán. Chế độ xem đó sẽ được thay đổi kích thước đúng dựa trên UICollectionViewLayoutDelegate của tôi, nhưng không phải trên iOS 7. Lưu ý rằng tôi đang sử dụng Xcode 6 và sự cố chỉ xảy ra trên iOS 7.
Khi tôi xây dựng ứng dụng trên iOS 8. Mọi thứ đều ổn.
Lưu ý: Màu tím là contentView , Blue là UIButton của tôi với góc tròn.
Tuy nhiên, trên iOS 7, tất cả các Chế độ xem bên trong Ô đột nhiên co lại thành khung (0,0,50,50) và không bao giờ tuân thủ quy tắc Tự động hóa của tôi nữa.
Tôi cho rằng đây là một lỗi trong SDK iOS 8 hoặc Swift hoặc có thể là Xcode?
Cập nhật 1: Sự cố này vẫn tồn tại trong Xcode 6.0.1 chính thức! Công việc tốt nhất xung quanh giống như những gì KoCMoHaBTa đã đề xuất bên dưới bằng cách đặt khung trong cellForItem của ô (Mặc dù vậy, bạn phải phân lớp ô của mình). Hóa ra đây là sự không tương thích giữa SDK iOS 8 và iOS 7 (kiểm tra câu trả lời của ecotax bên dưới được trích dẫn từ Apple).
Cập nhật 2: Dán mã này vào đầu cellForItem của bạn và mọi thứ sẽ ổn:
/** Xcode 6 on iOS 7 hot fix **/
cell.contentView.frame = cell.bounds;
cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
/** End of Xcode 6 on iOS 7 hot fix **/
contentView
thay đổi kích thước với ô hoạt động tốt để khắc phục sự cố. Tôi đoán rằng trong iOS 8, Apple đã thay đổi điều gì đó về cách xử lý các lượt xem nội dung di động khi được tạo trong Interface Builder (dù sao vẫn là một hộp đen). Nhưng thực tế là nó thay đổi hành vi khi nhắm mục tiêu iOS 7 chắc chắn là một lỗi.
contentView
cạnh vào các cạnh của ô.