2014-04-26 21 views
11

Làm thế nào tôi có thể nhận được hai cột trong một UICollectionView mà mất toàn bộ không gian mà không cần bất kỳ lợi nhuận hoặc lỗ hổng giống như những bức tranh tôi vẽ dưới đây: enter image description hereHai cột trên một uicollectionview

tôi đã cố gắng sử dụng đoạn mã sau:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
    return CGSizeMake(160, 160); 
} 

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { 
    return 1.0; 
} 

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { 
    return 1.0; 
} 

nhưng có kết quả này:

enter image description here

+0

Thay đổi này kích thước một cái gì đó thấp hơn (như 100). Ngoài ra, bạn có thể làm điều này trong bảng phân cảnh bằng cách thêm một mẫu thử nghiệm khác. –

+0

vì vậy mọi giải pháp chưa? – xeravim

Trả lời

4

Cách tốt nhất để làm điều này tôi tìm thấy là trong bảng phân cảnh hoặc phương pháp đại biểu, có kích thước mục là 159 và khoảng cách giữa 0,5 hoặc thậm chí nhỏ hơn nếu bạn muốn. Chỉ cần chơi xung quanh với nó

0

@jacobsieradzki tôi nghĩ rằng bạn cần phải thực hiện một số thay đổi s trong kích thước của các tế bào của bạn, hãy thử đầu tiên để làm cho chúng nhỏ hơn, tôi nghĩ rằng có lẽ 2 tế bào của 160.0 chiều rộng + 1.0 khoảng cách giữa các đường là những gì đang gây ra vấn đề của bạn.
Tôi đã làm theo hướng dẫn Ray Wenderlich một vài ngày trước đây rất dễ làm theo và giải thích rất rõ ràng các khái niệm đằng sau UICollectionView, cũng trong dự án mẫu họ đang làm một cái gì đó tương tự như những gì bạn đang cố gắng đạt được, đây là trong trường hợp nó giúp: CollectionViewTutorial

+0

Tôi đã thử điều này và có thể có được tối đa 155 chiều rộng trước khi nó đi vào dòng tiếp theo, nhưng làm thế nào tôi có thể làm cho nó chiếm không gian đầy đủ như không có bất kỳ khoảng cách? – jacobsieradzki

+0

bạn có thể kiểm tra khung xem bộ sưu tập của mình không? chắc chắn rằng nó mất tất cả chiều rộng –

5

Bằng cách thực hiện giao thức UICollectionViewDelegateFlowLayout , bạn có thể tìm thấy nhiều phương pháp để triển khai bố cục UICollectionView.

collectionView:layout:minimumInteritemSpacingForSectionAtIndex: 
collectionView:layout:minimumLineSpacingForSectionAtIndex: 

là đủ để giải quyết vấn đề này.

Ngoài ra, bạn có thể triển khai, numberOfItems và numberOfSections để chỉ định số hàng, cột.
  Ngoài ra, bạn có thể chỉ định kích thước ô của bạn dưới dạng (chiều rộng của UICollectionView)/(số cột bạn muốn) - một số khoảng trống giữa các ô
trong cellForItemAtIndexPath.
  Theo mặc định, các ô được tính toán theo thứ tự này và được sắp xếp tương ứng. Chỉ bằng cách giảm kích thước, bạn sẽ thấy nhiều cột. Ref1Ref2

1

đầu tiên đã đặt thụt đầu dòng mong muốn của bạn trong viewDidLoad, ví dụ, đặt đệm trên 10

let layout:UICollectionViewFlowLayout = UICollectionViewFlowLayout() 
     layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10) 
     collectionView.collectionViewLayout = layout 

và sau đó sử dụng

func collectionView(collectionView: UICollectionView, 
     layout collectionViewLayout: UICollectionViewLayout, 
     sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
      //device screen size 
      let width = UIScreen.mainScreen().bounds.size.width 
      //calculation of cell size 
      return CGSize(width: ((width/2) - 15) , height: 155) 
    } 
Các vấn đề liên quan