获取 UIStackView 排列子视图的中心点
Get the centre point of UIStackView arranged subviews
我在 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
}
找到解决方案。
在调用上面的for循环之前调用了stepsStack.layoutIfNeeded()
。
明确地说,堆栈视图是在我的自定义 UIView class 的 layoutSubviews
方法中添加的。
感谢 Larme 的提示。
我在 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
}
找到解决方案。
在调用上面的for循环之前调用了stepsStack.layoutIfNeeded()
。
明确地说,堆栈视图是在我的自定义 UIView class 的 layoutSubviews
方法中添加的。
感谢 Larme 的提示。