今天要在项目中为导航栏设置一张红色的背景图,出现了以下bug:
导航栏下出现了一块莫名其妙的空间,网上找了很多资料。
最后发现需要在控制器里设置这行代码:self.navigationController.navigationBar.translucent = NO;
如果加入导航栏背景图片而不设置translucent则默认设置为NO
translucnet属性控制导航栏是否是半透明效果。
如果translucent = yes,则状态栏及导航栏底部为透明的,界面上的组件应该从屏幕顶部开始显示,因为是半透明的,可以看到,所以为了不和状态栏及导航栏重叠,第一个组件的y应该从44+20的位置算起。
如果设置成no,则状态栏及导航样为不透明的,控件的位置从导航栏下面开始算,即不需要再+64。