Đây là những gì tôi đã làm. Lần đầu tiên tôi đặt kích thước của ô dựa trên kích thước của màn hình (để chúng tôi có thể nhận được số lượng hình ảnh tốt nhất trên mỗi hàng). Bạn có thể muốn thay đổi các con số cho phù hợp với nguyên nhân của bạn.
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
CGFloat widthOfCell =(self.view.frame.size.width-30)/2;
CGFloat heightOfCell =widthOfCell * 1.33;
CGSize returnValue = CGSizeMake(widthOfCell, heightOfCell);
returnValue.height += 5;
returnValue.width += 5;
return returnValue;
}
sau đó tôi đã sử dụng một phương pháp xử lý ảnh để xác định phong cảnh hoặc chân dung nhà nước, và (đối với ứng dụng của tôi), tôi quyết định làm cho mỗi hình ảnh một bức chân dung:
if (sourceImage.size.width>sourceImage.size.height) {
sourceImage = [[UIImage alloc] initWithCGImage: sourceImage.CGImage
scale: 1.0
orientation: UIImageOrientationRight];
}
Nếu bạn muốn có nó theo cách khác, hoán đổi số >
với <
CAVEAT: phương pháp quay của tôi không được xem xét nếu hình bên trái hoặc phải. Nói cách khác, nếu một hình ảnh được phong cảnh bằng lộn ngược, mã của tôi không thể nhận ra điều đó. Tôi hy vọng một người khác có thể giúp bạn mặc dù, và tôi hy vọng tôi đã không đi theo dõi! :)
Bạn có thể xem https://github.com/bryceredd/RFQuiltLayout. Có vẻ như thứ bạn có thể sử dụng cho số này – Rajneesh071