获取UIStackView排列的子视图的中心点

问题描述

我在UITableViewCell中有一个自定义视图。在此视图内是一个简单的UIStackView,其中包含4张图像(以编程方式添加)。我需要每个图像相对于UIView超级视图的中心点或原点。我尝试了几种方法,但是所有四个排列的子视图的中心点或原点都是相同的。

enter image description here

这是一个简化的代码

for i in 0...3 {
                 
   print(stepsstack.arrangedSubviews[i].frame.origin) //(0,0) for all 4
   print(stepsstack.arrangedSubviews[i].convert(stepsstack.arrangedSubviews[i].frame.origin,to: self)) //(0,0) for all 4
            
   print(stepsstack.arrangedSubviews[i].convert(stepsstack.arrangedSubviews[i].center,to: self)) //(10.0,9.5) for all 4
   print(stepsstack.convert(stepsstack.arrangedSubviews[i].center,9.5) for all 4
                
 }

解决方法

找到了解决方案。

在调用上述for循环之前调用了stepsStack.layoutIfNeeded()。 为了清楚起见,在我的自定义UIView类的layoutSubviews方法内添加了堆栈视图。 感谢Larme的提示。