Tôi đang sử dụng UICollectionView với hai ô mẫu thử nghiệm. Các ô mẫu có độ rộng khác nhau và chứa các điều khiển khác nhau (xem hình ảnh và xem web). Tôi chắc chắn sẽ trả lại ô mẫu chính xác cho một chỉ mục cụ thể (tất cả các ô hiển thị nội dung chính xác), nhưng kích thước ô mẫu thử bị bỏ qua và kích thước mục của bộ sưu tập được sử dụng thay thế. Nó không giống như tôi đang tự thiết lập kích thước. Điểm của việc cho phép ô mẫu có kích thước trong bảng phân cảnh là gì nếu thuộc tính chỉ bị bỏ qua khi nó thực sự được hiển thị?Thuộc tính kích thước ô mẫu UICollectionView iOS bỏ qua
Trả lời
Kích thước của ô trong trình chỉnh sửa bảng phân cảnh chỉ nhằm giúp bạn thiết kế ô. Vì mỗi ô mẫu có thể có kích thước khác nhau, UICollectionView không biết kích thước ô nào sẽ chọn cho tất cả các ô. Đó là lý do tại sao bạn đặt kích thước thực tế bạn muốn sử dụng cho các ô của mình một cách riêng biệt. Bạn có thể làm điều đó trong nhà thiết kế bằng cách chọn chế độ xem bộ sưu tập và đặt Chiều rộng và Chiều cao Kích thước ô của nó trong trình kiểm tra Kích thước, trong tiêu đề "Bộ sưu tập Chế độ xem".
Hoặc, bạn có thể ghi đè phương thức sau và trả về một đối tượng CGSize chỉ định kích thước bạn muốn sử dụng cho mỗi ô. Sử dụng phương pháp này, bạn thực sự có thể có mỗi tế bào có kích thước khác nhau:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
Ví dụ:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(100, 100);
}
điều khiển xem của bạn cần phải là một đại biểu của UICollectionViewDelegateFlowLayout để cho phương pháp này được gọi là. Vì vậy, đừng quên thêm rằng lời tuyên bố đại biểu đến file .h điều khiển quan điểm của bạn, chẳng hạn như:
@interface MyViewController() <UICollectionViewDelegateFlowLayout>
Nếu tất cả các tế bào của bạn có cùng kích thước, bạn chỉ cần thiết lập các thuộc kích thước tế bào của s UICollectionView
đến giống như thuộc tính kích thước của UICollectionViewCell
.
Nếu tất cả các ô có cùng kích thước và bạn có thể thiết lập các itemSize
trên UICollectionViewFlowLayout
Ví dụ:
((UICollectionViewFlowLayout *) self.collectionViewLayout).itemSize = CGSizeMake(100, 100);
Dường như bộ sưu tậpViewLayout.itemSize không khả dụng trong IOS6 – Sam
Bạn có thể thiết lập kích thước của UICollectionViewCell
trong UICollectionView
tài sản.
Trong bảng phân cảnh, chọn Collection View
tại Document Outline
, sau đó chỉnh sửa Cell Size
trong Size Inspector
.
Và bạn nên thay đổi Loại kích thước của ô thành Mặc định, nếu là Tùy chỉnh.
Swift, làm việc cho iOS mới nhất.
(collectionView.collectionViewLayout as! UICollectionViewFlowLayout).itemSize = cellSize
Tôi không có đủ điểm để trả lời cho Sam, nhưng điều quan trọng là nó không phải là UICollectionViewLayout nhưng UICollectionViewFlowLayout.
Trong Swift bạn có thể gọi phương thức đại biểu sizeForItemAtIndexPath để đặt kích thước cho mỗi ô.
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
if indexPath.row == 0 {
// Set the size for cell no. 0
}else if indexPath.row == 1 {
// Set the size for cell no. 1
}
}
Tôi hy vọng điều đó sẽ hữu ích. Cảm ơn!
Sử dụng đại biểu mặc định của nó. . .
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGSize mElementSize;
mElementSize = CGSizeMake(SCREEN_WIDTH , SCREEN_HEIGHT *0.60);
return mElementSize;
}
- 1. Kích thước ô khác nhau trong UICollectionview
- 2. Thuộc tính ô bảng bỏ qua chiều rộng
- 3. Xóa các ô khỏi UICollectionView qua NSNotification
- 4. thuộc tính kích thước bị bỏ qua trong danh sách lớp
- 5. Tại sao Chrome bỏ qua thuộc tính "kích thước" của đầu vào văn bản?
- 6. Đặt thuộc tính kích thước của thẻ thông qua css?
- 7. Kích thước DialogFragment (width) bỏ qua
- 8. Ô UICollectionView biến mất
- 9. Chỉnh sửa mẫu tùy chỉnh: Bỏ qua thuộc tính thuộc tính
- 10. Thay đổi kích thước các ô UICollectionView sau khi dữ liệu của chúng được đặt
- 11. Cách ServiceStack.OrmLite bỏ qua thuộc tính theo thuộc tính
- 12. Định kích thước ô HorizontalPanel
- 13. JSF2 bỏ qua alt trống thuộc tính
- 14. Bỏ qua thuộc tính khi deserializing
- 15. dompdf bỏ qua thuộc tính chiều rộng
- 16. AnkhSVN bỏ qua mẫu
- 17. Lặp qua tất cả các ô trong UICollectionView
- 18. lặp qua tất cả các ô trong UICollectionview
- 19. Không thể thay đổi thuộc tính backgroundView trên UICollectionView
- 20. Làm cách nào để thay đổi kích thước của UICollectionView?
- 21. UICollectionView registerCell - Các ô trống
- 22. UICollectionView: khác nhau mục kích thước không được tính vào các mặt hàng tái sử dụng
- 23. iOS 7: insertItemsAtIndexPaths: cuộn UICollectionView
- 24. UICollectionView cellForItemAtIndexPath không đăng ký ô
- 25. Dừng hoạt ảnh trong ô UICollectionView
- 26. Nhận ngoại lệ: Thuộc tính kích thước có kích thước không hợp lệ 0
- 27. Thuộc tính kích thước có kích thước không hợp lệ là 0
- 28. UICollectionView giống như Màn hình chính iOS
- 29. Delphi và iOS Kích thước tệp
- 30. Thiết lập thuộc tính kích thước của một Ember.TextField
Tôi đã sử dụng bản vẽ tùy chỉnh để thêm các lớp gradient, uilabel và uiimage vào ô uicollectionview của tôi và nó không được vẽ ở kích thước chính xác trong chế độ xem uicollection của tôi. Đặt mã này trong bộ điều khiển chế độ xem chính của tôi đã khắc phục được sự cố. – MGM
Nếu tất cả các ô có cùng kích thước, một cách hiệu quả hơn để chỉ định kích thước là đặt nó trong 'UICollectionViewFlowLayout'. ví dụ. 'flow.itemSize = CGSizeMake (50,100);' –
Nhưng có cách nào để lập trình truy cập ô mẫu thử từ phương thức '-collectionView: layout: sizeForItemAtIndexPath:' không? (Dequeueing các tế bào bằng cách sử dụng một định danh tái sử dụng không hoạt động, bởi vì điều đó kết thúc lên gọi phương pháp định cỡ, dẫn đến một vòng lặp vô hạn.) – erikprice