更新工具栏的 positionForBar

Update positionForBar for toolbar

在我的应用程序中,我使用顶部的工具栏,因为它可以根据我的需要更好地布置栏按钮项目,并且我将工具栏委托给视图控制器并告诉它是顶部附加的。我还有一个隐藏状态栏的设置,所以发生的问题是当状态栏设置为隐藏时,应用程序关闭然后重新打开,调用 positionForBar 但由于没有状态栏,它对工具栏没有任何作用,所以当我在应用程序上重新打开状态栏时看起来很奇怪,工具栏向下 20px,状态栏显示但状态栏没有背景,所以它看起来很奇怪。虽然 positionForBar 仍在被调用,但由于某种原因,我需要在工具栏再次绘制在状态栏后面之前再次关闭应用程序。我发现如果我从超级视图中删除工具栏并再次重新添加它,它将绘制在状态栏后面,或者我可以删除 positionForBar 并让我自己的视图成为状态栏的背景,这是我的老问题这个解决方案是它不会是透明的(我也许可以在那里放一个 20px 的工具栏?)我删除它并重新添加视图的问题是我需要移动大量代码因为删除它并重新添加它会破坏约束,因此我需要完全重建整个视图,以便它在状态栏后面重绘。有没有办法只刷新视图或其他东西?我已经尝试过 setNeedsLayout 和 setNeedsDisplay,除了删除和重新添加之外,没有任何东西可以重绘

尝试手动设置 UIToolbar 的框架:

topToolbar.frame = CGRectZero

或更新约束,两者都会导致 UIToolbar 更新其附件。