这是我的应用程序左侧的配置文件(ProfileViewController)和右侧的ContainerView(ContainerViewController)。我想要实现的是,一旦containerViewController完成了它的工作,它将更新UIView的高度。
// ContainerViewController.swift
let heightConstraint = self.view.constraints.filter { $0.identifier == "Height" }.first
heightConstraint?.constant = height
在浏览约束列表时,它们都是emtpy,我确实在故事板中设置了一些约束。所以为什么 ?有没有办法在ContainerViewController中访问UIView?
PS:
DispatchQueue.main.async {
self.view.frame = CGRect(x: 0, y: 0, width: width, height: height)
}
听起来很有效,但我认为修改约束是正确的?不是吗?
答案 0 :(得分:1)
我要做的是为约束设置IBOutlet,并将其存储在ContainerView中。
这样,即使代码(或故事板)将来发生变化,您也不依赖订单号或其他任何东西来获得此约束。
是的,正确的方法是将约束设置为常量,而不是更改框架。 但请注意,即使是约束常量更改也需要放在主(UI)线程上 - (通过代码的外观,我假设,您正在处理线程)。