gpt4 book ai didi

ios - UIStackView 竞争条件?

转载 作者:行者123 更新时间:2023-12-01 18:46:08 26 4
gpt4 key购买 nike

我有一个嵌套的 UIStackView,当我按下一个按钮时,它就会被实例化。更详细地说,我有一个 UIStackView,它遍历一个充满 CustomUIStackViews 的 NSMutableArrayList 并将它们添加为排列的Subviews。当 CustomUIStackViews 启动时,它们还会遍历自己的 NSMutableArrayList 填充 UIViews 并将它们添加为排列的Subviews。

奇怪的是,执行完所有 for 循环后,我有一个 NSLog:

NSLog(@"parentstackview height is %f",_parentStackView.frame.size.height);

它返回一个 0 (它不应该,高度应该是 1861 在所有堆栈 View 出现后,它们在模拟器中明显地做到了)。

但是如果我创建这个方法:
- (void)testMethod{
NSLog(@"parentstackview height is %f",_parentStackView.frame.size.height);
}

并将之前的 NSLog 替换为:
[self performSelector:@selector(testMethod) withObject:nil afterDelay:1.0];

然后在 1 秒延迟后返回 1861 。

为什么 1 秒的延迟会产生影响?

最佳答案

布局传递可能没有在您的代码中完成,而是稍后在运行循环中处理,这说明了不同的值。

如果在实例化嵌套堆栈 View 的同一代码中需要大小,则需要调用 layoutIfNeeded()立即布局所有 subview 。

您不会在 UIStackView 中找到这些详细信息。文档,因为它记录在堆栈 View 的父类(super class) UIView class reference在布局 subview 下。

关于ios - UIStackView 竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com