首页 > 代码库 > 被导航控制器包装的控制器的View的y值问题

被导航控制器包装的控制器的View的y值问题

最近一直在纠结问题,为什么有时候被导航控制器包装的控制器的View的y值有时候是64,有时候是0,觉得很奇怪,于是研究了一下,发现有个属性可以改变View的y值,那就是translucent(属于导航栏的)这个属性可以设置y值,这个属性的作用是用来设置导航栏是否半透明,默认值为Yes(半透明效果),为NO则不透明,下图展示了一下Yes和No的区别:

 

要想禁用translucent属性,可以在Storyboard中选中导航栏,然后在Attribute Inspectors中,取消translucent的勾选,或者直接导航栏的这个属性为NO。当translucent为NO是,当前导航控制器所包装的控制器的View的y值为64,反之为0,有些人会觉得奇怪,我没设置translucent=NO,只是用一个图片作为它的背景,然后View的y值就变成了64,

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forBarMetrics:UIBarMetricsDefault];

 

其实是你设置了图片之后,系统自动帮你把translucent那个属性的值设置成了NO,所以那个控制器的y值变成了64.

被导航控制器包装的控制器的View的y值问题