UICollectionViewCell 中的 SwiftUI 视图
Posted
技术标签:
【中文标题】UICollectionViewCell 中的 SwiftUI 视图【英文标题】:SwiftUI View in UICollectionViewCell 【发布时间】:2020-11-17 01:36:32 【问题描述】:我有一个 UICollectionView,我正在尝试使用 SwiftUI 设计我的 UICollectionViewCell。我已经看到了两个例子,one 和 two 在他们的 UICollectionViewCell 中以下列方式做到了这一点:
let controller = UIHostingController(rootView: SomeSwiftUIView)
let view = controller.view!
view.translatesAutoresizingMaskIntoConstraints = false
addSubview(view)
NSLayoutConstraint.activate([
view.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
view.topAnchor.constraint(equalTo: contentView.topAnchor),
view.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor)
])
这在视觉上效果很好,但我遇到的一个问题是我没有与 SwiftUI 视图进行用户交互。例如,如果我在 SwiftUI 视图中有一个 Button,则当您点击该按钮时不会执行该操作。如果 List 在 SwiftUI 视图中,则无法滚动该视图。 (我不是想在里面放一个List,这只是一个例子)
关于从这里去哪里有什么建议吗?谢谢!
【问题讨论】:
【参考方案1】:我通过将视图约束到单元格而不是 contentView 来解决这个问题,现在它工作正常。
NSLayoutConstraint.activate([
view.leadingAnchor.constraint(equalTo: leadingAnchor),
view.topAnchor.constraint(equalTo: topAnchor),
view.trailingAnchor.constraint(equalTo: trailingAnchor),
view.bottomAnchor.constraint(equalTo: bottomAnchor)
])
正如我所怀疑的,这是一个分层问题。
【讨论】:
以上是关于UICollectionViewCell 中的 SwiftUI 视图的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionViewCell 中的 Outlet 为零
接收关于从其父集合或表视图中删除 UICollectionViewCell(或 UITableViewCell)的通知
UICollectionViewCell 中的 SwiftUI 视图