gpt4 book ai didi

iphone - navigationController.navigationBarHidden 和 navigationController.navigationBar.hidden 有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 03:32:32 27 4
gpt4 key购买 nike

我发现了困难的方法

navigationController.navigationBarHidden = NO;

navigationController.navigationBar.hidden = NO;

不是一回事。事实上,如果我使用第一种语法来隐藏导航栏,那么我就不能使用第二种语法来显示它:它根本不会做任何事情。此外,显示/隐藏导航栏的第一种语法对我总是有效,而第二种语法有时有效,但并非总是如此。我无法确定它何时有效,何时无效。

由于我一直在修复其他人的代码(一个相当大的应用程序:超过 20 个 UIViewController),我不得不全局搜索 navigationBar.hidden 并将其替换为 navigationBarHidden。之后,我必须对 navigationBar setHidden: 进行全局搜索并替换为 navigationBarHidden 语法。这最终解决了这个问题。

然而,我想了解为什么会提供两个不同的选项,以及它们之间的真正区别是什么。

最佳答案

navigationBarHidden 在隐藏或显示此导航的 navBar 持续时间时应用动画,可以使用 UINavigationControllerHideShowBarDuration 设置

navigationBar.hidden 会直接改变 UINavigationBar(UIView 的子类)的可见状态

由于 UINavigationBarUIView 的子类,它继承了隐藏的 bool 属性,无法将其更改为 protected 或 private

来自 apple docs

The navigation controller is responsible for managing the configuration and display of the navigation bar and navigation toolbar. You must never modify these views directly. Instead, you should manipulate them through the methods and properties of the UINavigationController class. You can hide and show the navigation bar using the navigationBarHidden property or setNavigationBarHidden:animated: method.

关于iphone - navigationController.navigationBarHidden 和 navigationController.navigationBar.hidden 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177201/

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