【发布时间】:2017-11-16 12:10:38
【问题描述】:
我有一个应用程序,有时视图在导航控制器中,有时不在,有时在标签栏和导航控制器中。
我使用如下代码以编程方式创建视图:
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)))
感谢任何指导,因为这是我的应用程序中的一个主要问题
【问题讨论】:
-
Apple 规定的布局方式称为自动布局。这与大小类、特征集合和动态字体大小相结合,称为自适应布局。这些都不使用框架 - 它适用于所有尺寸的 iOS 设备。
-
我知道自动布局是如何工作的,但是当初始化对象时你不能这样做......你需要为视图控制器视图的手动初始化定义一个框架
-
强制使用框架时只需使用
CGRect.zero。我就是做这个的。 (编辑:刚刚看到你的答案。很高兴你找到了!)