-
Notifications
You must be signed in to change notification settings - Fork 238
Welcome to the JZNavigationExtension wiki!
Qiun Cheng edited this page Oct 10, 2018
·
5 revisions
jz_navigationBarHidden
jz_navigationBarBackgroundAlpha
jz_navigationBarTintColor
jz_navigationInteractivePopGestureEnabled
这几个API行为一致,如果从来没有设置过某一个属性,那么就读导航控制器的该属性值作为默认值,如果导航控制器也没有设置过该属性,那么它们不会做任何操作。所以可以通过设置导航控制器的其中一个属性作为全局的配置。
就用jz_navigationBarHidden打比方
比如:A控制器从来没有设置过jz_navigationBarHidden,那么当push到它的时候,会读A.navigationController.jz_navigationBarHidden,如果navigationController也没有设置过,那么就不会有任何操作,当前导航栏显示就显示,不显示就不显示。
每个项目对这几个属性期待的默认值是不同的,所以总结原因有以下几点:
如果没有设置过这几个属性,不会对导航栏做任何操作,这样有效的避免了集成JZNavigationExtension以后,会莫名其妙的对导航栏造成影响。
只需要在三个属性中有不同的两个控制器之间进行设置即可。
举个例子:
设控制器A..B..C.....Z是连续Push、Pop关系,并且只有“D”的导航栏想要显示,其它控制器的导航栏都想要隐藏。有两个办法实现这个需求,下面为伪代码。
- 方法一:
A.jz_navigationBarHidden = true;
D.jz_navigationBarHidden = false;
C.jz_navigationBarHidden = true; //C与D相邻且jz_navigationBarHidden值不同
E.jz_navigationBarHidden = true; //D与E相邻且jz_navigationBarHidden值不同
对于C、E设置的代码也完全可以写在能拿到它们实例的D控制器里,而不需要分散设置。
- 方法二:
navigationController.jz_navigationBarHidden = true;
D.jz_navigationBarHidden = false;
配置导航控制器的该值作为全局默认,为单独某个控制器设置即可。