代码之家  ›  专栏  ›  技术社区  ›  jackdm

实例化视图框架,使其适合导航栏/选项卡栏?

  •  1
  • jackdm  · 技术社区  · 7 年前

    我有一个应用程序,其中视图有时在导航控制器中,有时不在,有时在选项卡栏和导航控制器中。

    我使用以下代码以编程方式创建视图:

    let contact = ContactFormViewController(contactFormView: ContactFormView.init(frame: UIScreen.main.bounds))
    

    然而,这会导致帧始终与屏幕一样大,这意味着当有导航栏或选项卡栏时,视图会被推离可见屏幕,并且不适合。

    是否有一种方法可以调整视图高度,使其始终在屏幕上显示所有内容,而不考虑导航栏或选项卡栏等父元素?或者总是用这样的手动减法创建视图,这似乎很糟糕,因为它需要假设硬编码的元素:

    let attendees = AttendeesViewController(attendeesView: AttendeesView.init(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height-55)))
    

    感谢您的指导,因为这是我应用程序中的一个主要问题

    2 回复  |  直到 7 年前
        1
  •  2
  •   jackdm    7 年前

    解决方案是将框架设置为 CGRect.zero 然后在控制器的init方法中,将布局约束应用于要将其映射到的视图类 self.view

        2
  •  1
  •   Arrabidas92    7 年前

    我认为以UIScreen作为参考来展示您的观点是错误的。我认为您应该使用内容视图(层次结构顶部的视图)作为参考。