如何使用 SwiftUI 在 UICollectionViewCell 中填充内容

Posted

技术标签:

【中文标题】如何使用 SwiftUI 在 UICollectionViewCell 中填充内容【英文标题】:How can I use SwiftUI to populate content in a UICollectionViewCell 【发布时间】:2020-03-29 02:56:09 【问题描述】:

因为SwiftUI没有UICollectionView-like控件,所以我改用UIKit

根据interfacing-with-uikit,我知道SwiftUI如何与UIKit交互,但我想进一步使用SwiftUI封装UICollectionViewCell,并使用SwiftUI填充UICollectionViewCell的内容,我该怎么做。

据我所知SwiftUI中的List是按照UITableView封装的,我想让SwiftUIUICollectionView做同样的事情,我不想用一些三方库来做这个,我想知道秘密

【问题讨论】:

【参考方案1】:

假设您有 CellContentView SwiftUI 视图,您可以使用类似以下的方式将其集成到 UICollectionViewCell

if let cellContent = UIHostingController(rootView: CellContentView()).view 
    cell.contentView.addSubview(cellContent)

    cellContent.leadingAnchor.constraint(equalTo: cell.leadingAnchor).isActive = true
    cellContent.trailingAnchor.constraint(equalTo: cell.trailingAnchor).isActive = true
    cellContent.topAnchor.constraint(equalTo: cell.topAnchor).isActive = true
    cellContent.bottomAnchor.constraint(equalTo: cell.bottomAnchor).isActive = true

【讨论】:

我已经尝试过这个解决方案,它工作正常,除了我无法与 SwiftUI 视图交互。我无法在我的 SwiftUI 视图中按下按钮,所以我尝试添加一个列表,但我也无法滚动列表。也许是分层问题?

以上是关于如何使用 SwiftUI 在 UICollectionViewCell 中填充内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIkit 中添加 SwiftUI 对象

如何在 SwiftUI 中使用 SFSafariViewController?

如何在 swiftUI 视图中使用按钮? [关闭]

如何在 Xcode Playground 中使用 SwiftUI?

如何使用 SwiftUI 在首次应用启动时启动教程?

如何在 SwiftUI 中使用 .fileimporter 保存音频文件并检索文件并在 SwiftUI 列表中显示它们的文件名?