我正在加载一个视图控制器,它有一个可以采用不同大小的视图。大小在" viewDidLayoutSubviews"中设置。关于发送到视图的参数可能会有所不同。
我在视图中使用自动布局,它包含两个标签(标题+错误),一个桌面视图和两个并排的按钮(确认+取消)。
视图加载完美,但我仍然有这样的信息:
* Xcode大吼大叫约束然后指定哪一个似乎是问题*
(
"<_UILayoutSupportConstraint:0x604000281040 _UILayoutGuide:0x7f84ce652de0.height == 0 (active)>",
"<_UILayoutSupportConstraint:0x604000289830 _UILayoutGuide:0x7f84ce652de0.bottom == UIView:0x7f84ce66fea0.bottom (active)>",
"<NSLayoutConstraint:0x60000048b630 UIButton:0x7f84ce4b3c60'Continuer'.height == 60 (active)>",
"<NSLayoutConstraint:0x6040002963a0 UILabel:0x7f84ce670bd0'Sexe'.top == UILayoutGuide:0x6040001b2520'UIViewSafeAreaLayoutGuide'.top + 5 (active)>",
"<NSLayoutConstraint:0x6040002967b0 V:[UILabel:0x7f84ce670bd0'Sexe']-(0)-[UILabel:0x7f84ce43a770'Error'] (active)>",
"<NSLayoutConstraint:0x60400028c4e0 V:[UILabel:0x7f84ce43a770'Error']-(5)-[UITableView:0x7f84ce850000] (active)>",
"<NSLayoutConstraint:0x60400028c3a0 V:[UITableView:0x7f84ce850000]-(0)-[UIButton:0x7f84ce4b3c60'Continuer'] (active)>",
"<NSLayoutConstraint:0x60400028f0a0 V:[UIButton:0x7f84ce4b3c60'Continuer']-(0)-[_UILayoutGuide:0x7f84ce652de0] (active)>",
"<NSLayoutConstraint:0x60000048cda0 'UIView-Encapsulated-Layout-Height' UIView:0x7f84ce66fea0.height == 0 (active)>",
"<NSLayoutConstraint:0x604000296670 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x6040001b2520'UIViewSafeAreaLayoutGuide'] (active, names: '|':UIView:0x7f84ce66fea0 )>"
)
知道什么约束导致我这样的麻烦吗? (我可以发布完整的Xcode消息是它的任何用途,但我不想发送垃圾邮件。)
答案 0 :(得分:1)
我的问题是我在实例化之后设置了视图的高度,在&#34; viewDidLayoutSubviews&#34;中。 我正在使用&#34; Presentr&#34; lib可以轻松实例化一个视图。
我的问题与故事板中的约束无关。 在设置Presentr之前,我设法通过指定视图的高度来解决问题。 为此,我做了一个协议,迫使我的控制器有一个&#34; getHeight&#34; func得到它的高度,允许我这样的东西
let customType = PresentationType.custom(width: .custom(size: Float(self.view.frame.width)), height: .custom(size: editProfileVC.getHeight()), center: .center)
你可以在这里看到,对于身高,我使用&#34; editProfileVC.getHeight()&#34;
我希望它也可以帮助别人。