Vì vậy, tôi đang sử dụng UICollectionView
dưới AutoLayout
bảng phân cảnh đã bật. Tôi đang cố gắng đặt kích thước ô dựa trên collectionView
chính nó và dựa trên phương pháp [collectionView: layout: sizeForItemAtIndexPath:]
. collectionView
cũng phụ thuộc vào bố cục tự động và kích thước sai ở lần đầu tiên (tôi giả định đây là trước khi xem được bố cục). Tôi biết rằng họ sẽ có kích thước chính xác sau khi phương thức viewDidLayoutSubviews
được gọi nhưng nó khiến tải lại hai lần các mặt hàng collectionView
khiến giao diện người dùng ổn định vào thời gian chạy.Kích thước ô xem UICollectionView trong AutoLayout
Dưới đây là [collectionView: layout: sizeForItemAtIndexPath:]
phương pháp triển khai của tôi.
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGSize innerSize = CGSizeMake(galleryView.frame.size.width - 80, galleryView.frame.size.height - 40);
GLPhotoAsset *photo = [(PCOpticsPhotoPoint *)_cluster.points[indexPath.row] photo];
CGFloat ratio = MIN(innerSize.width/photo.size.width, innerSize.height/photo.size.height);
return CGSizeMake(photo.size.width * ratio, photo.size.height * ratio);
}
"Tôi đang cố gắng đặt kích thước ô dựa trên collectionView" Không theo dõi bạn ở đây? –
@KyleTruscott Tôi đang tính toán và trả về kích thước ô dựa trên collectionView trong phương thức [collectionView: layout: sizeForItemAtIndexPath:]. Vấn đề là phương pháp này được gọi trước khi tự động bố trí được thực hiện. – Pei
Bạn có nói rằng kích thước của các tế bào của bạn là "liên quan" để rect của tổng quan bộ sưu tập? Có lẽ bạn nên đăng bài thực hiện của bạn '[collectionView: layout: sizeForItemAtIndexPath:]' –