SnapKit snp 无法分配给 UIHostingController

Posted

技术标签:

【中文标题】SnapKit snp 无法分配给 UIHostingController【英文标题】:SnapKit snp can't assign to UIHostingController 【发布时间】:2020-07-18 12:10:14 【问题描述】:

在许多项目中我都使用 SnapKit。在新项目上也是如此。在项目中,我有与 SwiftUI 视图连接的 ViewController:

class OfficeListViewController: UIViewController 
 override func viewDidLoad() 
   super.viewDidLoad()
   let vc = UIHostingController(rootView: OfficeListView())
   addChild(vc)
   view.addSubview(vc.view)
   vc.didMove(toParent: self)
   vc.view.translatesAutoresizingMaskIntoConstraints = false

   // Here I want to set constraints to vc
   vc.snp // throws error: Value of type 'UIHostingController<OfficeView>' has no member 'snp'
 


struct OfficeListView: View 
  var body: some View 
    Text("View")
  

但它会抛出错误:

“UIHostingController”类型的值没有成员“snp”

如何正确使用SnapKit?

【问题讨论】:

UIHostingController 只是UIViewController 的子类。我不知道您所说的vc.snp 是什么意思,但如果您想设置约束,请像往常一样使用vc.view 【参考方案1】:

UIHostingController 只是UIViewController 的子类,它在常规UIView 中呈现SwiftUI 视图。如果你想设置约束,那么你应该使用vc.view,就像我们通常对视图所做的那样。

【讨论】:

以上是关于SnapKit snp 无法分配给 UIHostingController的主要内容,如果未能解决你的问题,请参考以下文章

Snapkit:将多个限制为边距

如何在 SnapKit 中按值增加视图高度?

如何获取 snapkit 为 UIView 声明的高度约束?

“superview”无法识别

如何在 Swift 中将 SnapKit ConstraintItem 转换为整数?

如何在 SnapKit 中按比例设置边缘偏移与超级视图高度的大小