gpt4 book ai didi

ios - Animate Controls 因 UINavigationBar 的更改而下降

转载 作者:行者123 更新时间:2023-11-29 03:29:05 27 4
gpt4 key购买 nike

我有一个带有标准 UINavigationBar 的 UINavigationController。当呈现某些 UIViewController 和方向时,UINavigationBar 可能会或可能不会出现,它可能有也可能没有提示元素。这意味着条形高度经常变化。

我在 UINavigationBar 下面有一些 subview ,设置了 NSLayoutConstraints 到 topLayoutGuide。它通常按预期布局,根据 UINavigationBar 的高度适当调整 subview 的垂直位置。它不做的是在 UINavigationBar 动画显示后不时移动 subview 。

具体来说,从隐藏 UINavigationBar 的状态过渡到不隐藏导航栏的 UIViewController。 View 显示,然后导航栏动画到位。 subview 不会向下移动。如果我旋转设备,每件事都会再次适本地布置。仅在动画导航栏进出或显示/隐藏提示时,我找不到重新评估约束的钩子(Hook)。

我在 viewDidAppear、viewDidLayoutSubviews 等不同地方尝试了 [self.view updateConstraints][self.view updateConstraintsIfNeeded]。似乎没有更新 topLayoutConstraint。

我熟悉边缘约束、半透明导航栏和其他各种防止整个 View 出现在导航栏下方的方法。我确实想保持全尺寸 View ,我想要半透明条,所以这些不是我的解决方案。似乎约束应该自动处理这个问题,因此自动布局中的“自动”。

为了简化,为了娱乐,UINavigationController 和 rootViewcontroller 显示了只有一个标题的普通导航栏。在下一个呈现的 viewController 的 viewDidLoad 中,我有 [self.navigationContoller setPrompt:self.myPrompt]。 View 呈现,设置提示时,导航栏变大。栏下方的一些标签是根据 topLayoutGuide 设置的,它最初会正确放置它们。我预计当酒吧增长时,他们会向下移动。来回旋转设备,它们现在布局正确。弹出 viewController 并推回顶部,重复上述操作。

最佳答案

所以,事实证明这一切都是我造成的。在尝试了各种强制布局更新的方式之后,解决方案是将 [myView setPrompt:myPrompt] 移出 viewDidLoad 并改为在 viewDidAppear 中调用它。

完全按预期工作。导航栏增长, subview 根据需要移动和缩小。现在我必须找到我贴在各处试图做错的所有实验代码。

关于ios - Animate Controls 因 UINavigationBar 的更改而下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20052948/

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