Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用autolayout在表视图中显示水平集合视图_Ios_Swift_Uitableview_Uicollectionview_Uikit - Fatal编程技术网

Ios 使用autolayout在表视图中显示水平集合视图

Ios 使用autolayout在表视图中显示水平集合视图,ios,swift,uitableview,uicollectionview,uikit,Ios,Swift,Uitableview,Uicollectionview,Uikit,我拼命尝试使用autolayout将水平滚动集合视图放入表视图单元格,但是集合视图和表视图单元格不会按预期布局,因此它们的高度最终为零。我已经看过了所有关于这个话题的帖子,但是没有一篇能帮我解决这个问题 总体结构如下所示: 桌面视图 表视图单元 集合视图 |集合视图单元格|集合视图单元格| 表视图单元 集合视图 |集合视图单元格|集合视图单元格| 我已设置TableView自动调整大小属性 tableView.rowHeight = UITableViewAutomaticDimension t

我拼命尝试使用autolayout将水平滚动集合视图放入表视图单元格,但是集合视图和表视图单元格不会按预期布局,因此它们的高度最终为零。我已经看过了所有关于这个话题的帖子,但是没有一篇能帮我解决这个问题

总体结构如下所示:

桌面视图

表视图单元

集合视图

|集合视图单元格|集合视图单元格|

表视图单元

集合视图

|集合视图单元格|集合视图单元格|

我已设置TableView自动调整大小属性

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 100.0
以及集合视图流布局属性:

flowLayout.scrollDirection = .horizontal
flowLayout.estimatedItemSize = CGSize(width: 1.0, height: 1.0)
TableViewCell布局:

contentView.layout("H:|[a]|", views: collectionView)
contentView.layout("V:|[a]|", views: collectionView)
contentView.layout("H:|[a]|", views: imageView)
contentView.layout("H:|[a]|", views: titleLabel)
contentView.layout("H:|[a]|", views: subtitleLabel)
contentView.layout("V:|[a]-(4)-[b][c]|", views: imageView, titleLabel, subtitleLabel)
CollectionViewCell布局:

contentView.layout("H:|[a]|", views: collectionView)
contentView.layout("V:|[a]|", views: collectionView)
contentView.layout("H:|[a]|", views: imageView)
contentView.layout("H:|[a]|", views: titleLabel)
contentView.layout("H:|[a]|", views: subtitleLabel)
contentView.layout("V:|[a]-(4)-[b][c]|", views: imageView, titleLabel, subtitleLabel)
我已经尝试手动设置集合视图的高度,但其contentSize始终为零,这可能是因为它没有空间来渲染其单元格

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    collectionViewHeightConstraint.constant = collectionView.contentSize.height
}
我认为我需要告诉集合视图在代码中的任何位置布局,并给它足够的空间,但我的尝试在运行时导致了大量的自动布局错误。也许有人能帮我解决这个问题,我真的不想硬编码高度

提前谢谢大家,

Andreas

您可以使用“UICollectionViewDelegateFlowLayout”,它告诉集合视图每个单元格的大小,然后为单元格的子视图项添加自动布局约束

将集合视图应用于UICollectionViewDelegateFlowLayout,并设置 集合视图的数据源和委托

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: 100, height: frame.height)
    }
您可以使用“UICollectionViewDelegateFlowLayout”,它告诉集合视图每个单元格的大小,然后为单元格的子视图项添加自动布局约束

将集合视图应用于UICollectionViewDelegateFlowLayout,并设置 集合视图的数据源和委托

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: 100, height: frame.height)
    }

问题是,单元格没有固定的大小,它们应该自己自动布局。关于在容器视图中添加子视图,将此视图大小设置为合适,使用此容器的框架动态设置单元格大小问题是,单元格没有固定的大小,他们应该自己自动布局。如何在容器视图中添加子视图,将此视图大小设置为合适,使用此容器的框架动态设置单元格大小