Ios 从布局约束中查找UIView的大小
我有一个xib文件,如下所示。我需要找出它的自动布局约束会有多高。文本都是动态的和环绕的。整个视图的宽度也可能有所不同 当视图添加到视图控制器时,所有内容都在正确的位置,因此我相信约束都设置正确,但问题是我想同步实例化此视图,告诉它进行自我设置,然后询问它的总帧将是什么 我试过类似的方法Ios 从布局约束中查找UIView的大小,ios,swift,uiview,autolayout,nslayoutconstraint,Ios,Swift,Uiview,Autolayout,Nslayoutconstraint,我有一个xib文件,如下所示。我需要找出它的自动布局约束会有多高。文本都是动态的和环绕的。整个视图的宽度也可能有所不同 当视图添加到视图控制器时,所有内容都在正确的位置,因此我相信约束都设置正确,但问题是我想同步实例化此视图,告诉它进行自我设置,然后询问它的总帧将是什么 我试过类似的方法 let view = MyView.loadFromNib() view.putMyTextOnAllTheLabels() view.setNeedsUpdateConstraints() view.u
let view = MyView.loadFromNib()
view.putMyTextOnAllTheLabels()
view.setNeedsUpdateConstraints()
view.updateConstraintsIfNeeded()
view.setNeedsLayout()
view.layoutIfNeeded()
let fixedWidth: CGFloat = 100
let size = CGSizeMake(fixedWidth, CGFloat.max)
let desiredFrame = view.systemLayoutSizeFittingSize(sizeToAssessWith, withHorizontalFittingPriority: UILayoutPriorityDefaultLow, verticalFittingPriority: UILayoutPriorityDefaultLow)
然而,期望的框架似乎永远都不正确。它与视图实际添加到视图时得到的帧不同
真正有用的是,当所有视图和包含子视图的子视图都决定了它们的最终帧时,如果有某种回调或获取回调的方法,就我所知,我是否调用setNeedsUpdateConstraints或我的示例代码中紧随其后的任何行,这些似乎没有同步应用任何约束,如果我在调用这些方法后直接检查标签的位置,那么它们都位于完全错误的位置
那么,我应该如何找到自动布局将使此视图变大的大小呢?您可以通过创建自定义控件、重写IntrinsicContentSize并在其中添加回调来实现所需的大小。您可以通过创建自定义控件、重写IntrinsicContentSize并添加回调来实现所需的大小那里