У меня есть UITableViewController
с каждым UITableViewCell
, содержащим UICollectionView
, где содержимое UICollectionView
должно быть полностью видимым. Моя проблема заключается в том, что при возврате высоты UITableViewCell
я не могу вернуть правильную высоту, потому что я не могу вычислить, как рассчитать contentSize
UICollectionView
для его содержимого.UICollectionView внутри UITableViewCell, UITableView Динамическая высота
ответ
Да, вы можете это сделать. Вам нужно установить оценочную высоту для tableview как welll, если вы хотите динамическую высоту таблицы.
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight
Вы должны убедиться, что ваши клетки имеют точно такую же высоту, как и коллекции view.when вы настроите ваши клетки в наружном Tableview пытаются перезагрузить свои данные во внутреннем CollectionView иначе из-за многократного использования логической ячейки API будет не различать предыдущий просмотр коллекции.
Обновлено:
У меня был случай, когда я должен был хранить TableView внутри клетки.
Внутренняя ячейка выглядит так, как показано в таблице.
@IBOutlet weak var uploadedDocumentsTableView: UITableView! // has 0 to left right top botton margin to superview on storyboard prototype (Contenview)
@IBOutlet weak var tableViewCellHeight: NSLayoutConstraint! //To constraint the height of the tableview inside the cell.
//This function is called when the outer tableview delegate calls cellForRowAtIndexPath to deque a cell.
override func setupWithCellModel(cellModel: CRCustomerAreaDetailsCellModel) {
let castedCellModel = cellModel as? CRCustomerAreaDocumentUploadCellModel
if let documents = castedCellModel?.docUploadItem?.documents {
tableViewCellHeight.constant = CGFloat(documents.count * 60)
}
uploadedDocumentsTableView.reloadData()
}
Обыкновенное
extension CRCustomerAreaDocumentUploadV2GalleryCell: UITableViewDataSource {
public func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 60
}
public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let castedCellModel = cellModel as? CRCustomerAreaDocumentUploadCellModel
if let documents = castedCellModel?.docUploadItem?.documents {
return documents.count
}
return 0
}
public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
...
//Return your cell
}
}
высота моего наружными Tableview рассчитывается путем автоматического измерения, но и для внутренней Tableview я должен указать высоту самостоятельно.
Я уже это сделал .. это прекрасно работает в других случаях ... но в случае из UICollectionVIew внутри UITableviewCell ... это не работает должным образом ... –
UIScrollView не имеет правильного внутреннего содержимого. –
Да, конечно, но вы можете сохранить его в свойстве, если все строки представления коллекции имеют одинаковую высоту.(numberOfrows * rowheight) –
Я много раз читал об этом. Вы не должны ставить CollectionView внутри TableViewCell. Это может вызвать множество проблем (например, капли кадров). Вы пытались использовать StackView вместо этого? Вы пробовали AsyncDiplayKit?
Мое требование состоит в том, что у меня есть вертикальная динамическая прокручиваемая страница с динамическими горизонтальными прокручиваемыми элементами ... любые другие идеи для этого ... UIStackView в этом случае не поможет –
Извините, но вы не можете использовать UITableViewAutomaticDimension для определения размера ячейки с помощью UICollectionView внутри, потому что представление коллекции не имеет правильного внутреннего содержимого. Вы должны перегрузить height метод UITableViewDelegate:
- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath;
И вернуть правильную высоту от этого метода.
Другим способом создать настраиваемое представление, содержащее UICollectionView и контролирует содержание представления коллекции (пример из моего кода):
- (CGSize)intrinsicContentSize
{
CGSize size = CGSizeMake(UIViewNoIntrinsicMetric, self.collectionView.collectionViewLayout.collectionViewContentSize.height);
return size;
}
- (void)addTags:(NSArray<BLTag*>*)tags
{
[_tagsList addObjectsFromArray:tags];
[self _reloadData];
}
Этого вид возвращает правильного размер внутреннего содержания, следовательно, вы можете вставить его в ячейку с автоматическая высота.
- 1. динамическая UITableViewCell высота программно
- 2. UITableView Expandable + Динамическая высота ячейки (согласно UITextView внутри UITableViewCell)
- 3. Динамическая высота UITableViewCell
- 4. Динамическая высота UITableView выпуска
- 5. Динамическая высота UITableViewCell
- 6. Динамическая высота многоразовая UITableViewCell
- 7. UICollectionView - динамическая высота ячейки?
- 8. UICollectionView Cell динамическая высота
- 9. Динамическая высота UITableViewCell
- 10. UITableViewCell UIButton динамическая высота
- 11. Динамическая высота UITableViewCell с исключениями
- 12. UITableViewCell + Динамическая высота + Auto Layout
- 13. UICollectionView внутри UITableViewCell
- 14. UiCollectionView внутри UitableViewCell
- 15. Динамическая высота для UITableview
- 16. Динамическая высота ячейки Uitableview
- 17. Пустой UICollectionView внутри UITableViewCell
- 18. Быстрая динамическая высота ячейки UITableViewCell в Runtime
- 19. UITableViewCell Динамическая высота на основе UIImageView
- 20. Динамическая высота ячейки UITableView с UIStackViews
- 21. Динамическая высота UITableViewCell для сложных ячеек
- 22. IOS: Динамическая высота для UITableViewCell
- 23. Динамическая высота UITableViewCell с изображением
- 24. UICollectionView не обновляется внутри UITableViewCell
- 25. UICollectionView внутри UITableView с динамическим вводом (UICollectionView)
- 26. Динамическая высота UITableviewCell с использованием UITableViewAutomaticDimension
- 27. UICollectionView внутри UITableViewCell НЕ динамически правильного размера
- 28. UICollectionView внутри UITableViewCell - AutoLayout
- 29. UITableView динамическая высота всегда 0
- 30. Динамическая высота UITableView с ограничениями
Вы хотите, чтобы http://eithanshavit.com/2015/04/18/Dynamic_Size_UICollectionView_Cell.html – Amanpreet
вы можете показать код? и почему бы не использовать полный просмотр коллекции, а не добавлять его в таблицу? – Joshua
Код указан в этом URL-адресе: https://drive.google.com/file/d/0B3bD5h4vCJXcc2hnSWk0TXd1LWs/view?usp=sharing –