【问题标题】:Get the centre point of UIStackView arranged subviews获取 UIStackView 排列的子视图的中心点
【发布时间】:2021-02-24 08:29:48
【问题描述】:

我在 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
                
 }

【问题讨论】:

  • 你什么时候调用那个方法的?
  • 来自 UIView 类的 layoutSubviews。
  • 嗯,我在我的自定义 UIView 类里面,所有的计算都是在 layoutSubviews 方法中进行的。一切都布置得很完美,但似乎无法找到中心点。

标签: ios swift uiview uistackview bounds


【解决方案1】:

找到了解决办法。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多