ios - 获取 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
}
解决方案
找到了解决方案。
在调用stepsStack.layoutIfNeeded()
上述 for 循环之前调用。需要明确的是,堆栈视图是在layoutSubviews
我的自定义 UIView 类的方法中添加的。感谢拉尔姆的提示。
推荐阅读
- c - i2c_register_board_info 符号未定义
- java - 如何使用java解析json输出
- sql - 获取视图行数的元数据
- java - 指向另一个对象引用的 Java 对象引用
- magento - 由于组件依赖性,Magento 更新的就绪检查失败
- c++ - 使用 `void` 专门化模板的规则是什么?
- angular - 有角度的http请求的假网址(http响应的临时保留)?
- c# - 检查 FluentAssertion 异常语法中的返回值
- bash - 多线终端输入
- php - php: set_error_handler 导致非静态方法 Mail::factory() 不应被静态调用