首页 > 解决方案 > 获取 UIStackView 排列的子视图的中心点

问题描述

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

在此处输入图像描述

这是一个简化的代码:

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, to: self)) //(10.0, 9.5) for all 4
                
 }

标签: iosswiftuiviewuistackviewbounds

解决方案


找到了解决方案。

在调用stepsStack.layoutIfNeeded()上述 for 循环之前调用。需要明确的是,堆栈视图是在layoutSubviews我的自定义 UIView 类的方法中添加的。感谢拉尔姆的提示。


推荐阅读