Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从布局约束中查找UIView的大小_Ios_Swift_Uiview_Autolayout_Nslayoutconstraint - Fatal编程技术网

Ios 从布局约束中查找UIView的大小

Ios 从布局约束中查找UIView的大小,ios,swift,uiview,autolayout,nslayoutconstraint,Ios,Swift,Uiview,Autolayout,Nslayoutconstraint,我有一个xib文件,如下所示。我需要找出它的自动布局约束会有多高。文本都是动态的和环绕的。整个视图的宽度也可能有所不同 当视图添加到视图控制器时,所有内容都在正确的位置,因此我相信约束都设置正确,但问题是我想同步实例化此视图,告诉它进行自我设置,然后询问它的总帧将是什么 我试过类似的方法 let view = MyView.loadFromNib() view.putMyTextOnAllTheLabels() view.setNeedsUpdateConstraints() view.u

我有一个xib文件,如下所示。我需要找出它的自动布局约束会有多高。文本都是动态的和环绕的。整个视图的宽度也可能有所不同

当视图添加到视图控制器时,所有内容都在正确的位置,因此我相信约束都设置正确,但问题是我想同步实例化此视图,告诉它进行自我设置,然后询问它的总帧将是什么

我试过类似的方法

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并添加回调来实现所需的大小那里