我有一个应用程序,有时视图在导航控制器中,有时不在,有时在选项卡栏和导航控制器中。
我使用如下代码以编程方式创建我的视图:
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)))
感谢您的指导,因为这是我应用程序中的一个主要问题。
发布于 2017-11-16 07:55:51
解决方案是将框架设置为CGRect.zero
,然后在控制器的init方法中,将布局约束应用到视图类以将其映射到self.view
。
发布于 2017-11-16 04:48:06
我认为以UIScreen作为参考来阐述你的观点是错误的。我认为您应该使用content视图(层次结构顶部的视图)作为引用。
https://stackoverflow.com/questions/47329355
复制相似问题