я имел эту проблему (UICollectionView inside of UITableViewCell - AutoLayout)сбоя при прокрутке TableView, который имущий в CollectionView в нем
и после попытки несколько решения, которые доступны в Интернете я пришел с этим @Pablo Romeu's answer я попытался его решением, теперь я получил TableView с клетками CollectionView в нем (который может динамически изменять свой размер в зависимости от содержания в нем) но при прокрутке через мой Tableview его получение разбившихся с этой ошибкой:
2016-06-13 22:05:51.546 WishMeluck[3507:425240] the behavior of the UICollectionViewFlowLayout is not defined because:
2016-06-13 22:05:51.546 WishMeluck[3507:425240] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
2016-06-13 22:05:51.546 WishMeluck[3507:425240] Please check the values return by the delegate.
2016-06-13 22:05:51.547 WishMeluck[3507:425240] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x7fb83c05de90>, and it is attached to <UICollectionView: 0x7fb83a0c7c00; frame = (0 82.5; 375 179); clipsToBounds = YES; autoresize = RM+BM; tag = 4; gestureRecognizers = <NSArray: 0x7fb83c05cf00>; layer = <CALayer: 0x7fb83c055fb0>; contentOffset: {0, 0}; contentSize: {539, 179}> collection view layout: <UICollectionViewFlowLayout: 0x7fb83c05de90>.
2016-06-13 22:05:51.547 WishMeluck[3507:425240] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.
2016-06-13 22:05:51.548 WishMeluck[3507:425240] the behavior of the UICollectionViewFlowLayout is not defined because:
2016-06-13 22:05:51.548 WishMeluck[3507:425240] the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.
2016-06-13 22:05:51.548 WishMeluck[3507:425240] Please check the values return by the delegate.
2016-06-13 22:05:51.548 WishMeluck[3507:425240] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x7fb83c05de90>, and it is attached to <UICollectionView: 0x7fb83a0c7c00; frame = (0 82.5; 375 179); clipsToBounds = YES; autoresize = RM+BM; tag = 4; gestureRecognizers = <NSArray: 0x7fb83c05cf00>; layer = <CALayer: 0x7fb83c055fb0>; contentOffset: {0, 0}; contentSize: {539, 179}> collection view layout: <UICollectionViewFlowLayout: 0x7fb83c05de90>.
2016-06-13 22:05:51.548 WishMeluck[3507:425240] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.
(lldb)
я не смог выяснить причина этой ошибки, если какой-либо орган знает ы, то пожалуйста, помогите мне
добавили это коды к моему TableViewCell
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
// collectionViewContainer.frame = self.bounds;
// collectionViewContainer.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
let flow: UICollectionViewFlowLayout = (self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout)
// Configure the collectionView
flow.minimumInteritemSpacing = 1
// This enables the magic of auto layout.
// Setting estimatedItemSize different to CGSizeZero
// on flow Layout enables auto layout for collectionView cells.
// https://developer.apple.com/videos/play/wwdc2014-226/
flow.estimatedItemSize = CGSizeMake(1, 1)
// Disable the scroll on your collection view
// to avoid running into multiple scroll issues.
self.collectionView.scrollEnabled = true
}
func bindWithModel(model: AnyObject) {
// Do your stuff here to configure the tableViewCell
// Tell the cell to redraw its contentView
self.contentView.layoutIfNeeded()
}
// THIS IS THE MOST IMPORTANT METHOD
//
// This method tells the auto layout
// You cannot calculate the collectionView content size in any other place,
// because you run into race condition issues.
// NOTE: Works for iOS 8 or later
override func systemLayoutSizeFittingSize(targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize {
// With autolayout enabled on collection view's cells we need to force a collection view relayout with the shown size (width)
//self.collectionView.frame = CGRectMake(0, 0, targetSize.width, targetSize.height)
self.collectionView.layoutIfNeeded()
// If the cell's size has to be exactly the content
// Size of the collection View, just return the
// collectionViewLayout's collectionViewContentSize.
return self.collectionView.collectionViewLayout.collectionViewContentSize()
}
и это в моем CollectionViewCell:
class CollectionViewCell: UICollectionViewCell {
@IBOutlet var imgView: UIImageView!
override func awakeFromNib() {
self.contentView.setNeedsLayout()
}
}
также это в моем TableViewController:
// Enable automatic row auto layout calculations
self.tableView.rowHeight = UITableViewAutomaticDimension;
// Set the estimatedRowHeight to a non-0 value to enable auto layout.
self.tableView.estimatedRowHeight = 100
мой проект file
@Rienier спасибо за ответного человека, я устал от этого, но его сбой приложения с n приглашает цикл ошибок NSLog –
Я просматриваю, чтобы проверить, могу ли я исправить эту проблему, любой результат, который я поделюсь в своем ответе по праву –
это будет хорошо для меня –