2016-01-15 14 views
6

Tôi có một UICollectionView trong một UITableViewCell. Vì vậy, hệ thống phân cấp là như thế này:Disable di chuyển trong UICollectionView và thay đổi kích thước để bọc tất cả các tế bào

UITableView -> UITableViewCell -> UICollectionView -> UICollectionViewCell

Những gì tôi muốn đạt được ở đây là vô hiệu hóa di chuyển trong UICollectionView, và làm cho nó trông giống như một danh sách lớn của các mặt hàng đó. Tất cả nội dung được tạo tự động. Vì vậy, làm thế nào để thay đổi kích thước một UICollectionView tùy thuộc vào các tế bào của nó. Chiều cao của nó phải bằng tổng của tất cả UICollectionViewCells.

Cảm ơn!

Edit: Tôi cố gắng vô hiệu hóa di chuyển và nó làm việc. Sau đó, cố gắng thay đổi kích thước ô nhưng dường như không làm bất cứ điều gì:

cell.viewscollectionview.scrollEnabled = false 
cell.viewscollectionview.frame = CGRectMake(0, 0, tableView.frame.width, 800) 
+0

Hãy xem [hướng dẫn này] (http://www.raywenderlich.com/87975/dynamic-table-view-cell- chiều cao-ios-8-swift), có thể giúp bạn. Bạn sẽ kết thúc phải hai chiều cao năng động: 1) 'chiều cao UICollectionView' dựa trên số lượng của' UICollectionViewCells' x chiều cao của họ; 2) Chiều cao 'UITableViewCell' phải bằng' UICollectionView' khi nó đã cập nhật chiều cao của nó. – mathielo

+0

Vậy làm thế nào để tôi thay đổi chiều cao của UIcollectionView, không có vấn đề gì tôi làm điều đó vẫn giống như một bộ trong kịch bản này. –

+0

Có bất kỳ hạn chế nào trong bảng phân cảnh không? – lukasbalaz7

Trả lời

1

Hãy thử sử dụng tự động trả lời. Sử dụng giới hạn chiều cao của chế độ xem bộ sưu tập. Giữ nguyên hằng số trong phần bắt đầu. Khi bạn thêm dữ liệu vào ô điều chỉnh chiều cao của chế độ xem bộ sưu tập bằng cách thay đổi hằng số của giới hạn chiều cao.

1

Bạn phải tính toán UICollectionView chiều cao bên trong heightForRowAt trong tableView đại biểu.

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    // constants, should be initialized somewhere else 
    let totalItem: CGFloat = 20 
    let totalCellInARow: CGFloat = 3 
    let cellHeight: CGFloat = 120 

    let collViewTopOffset: CGFloat = 10 
    let collViewBottomOffset: CGFloat = 10 

    let minLineSpacing: CGFloat = 5 

    // calculations 
    let totalRow = ceil(totalItem/totalCellInARow) 
    let totalTopBottomOffset = collViewTopOffset + collViewBottomOffset 
    let totalSpacing = CGFloat(totalRow - 1) * minLineSpacing // total line space in UICollectionView is (totalRow - 1) 
    let totalHeight = (itemHeight * totalRow) + totalTopBottomOffset + totalSpacing 

    return totalHeight 
} 

Đối với đầy đủ hướng dẫn, bạn có thể đọc nó ở đây: https://medium.com/@adinugroho/fixed-height-uicollectionview-inside-uitableview-79f24657d08f

Các vấn đề liên quan