为了项目的重用性,昨天封装了一个view用来调用,封装的时候没有创建导航条,尺寸什么的非常完美,但是加到项目之后,坑了。。。
没有导航条之前的效果加入导航条之后,效果如下
加入导航条之后的效果在controller中修改frame
CGRectMake(0, 64, VIEW_WIDTH, VIEW_HEIGHT)
效果如下
在controller中修改frame后的效果改变controller的尺寸不行,只能到view中改变尺寸,修改了很多行代码之后虽然可以,但是重用性很低了,只针对有导航条的情况才可以,所以这个方法不可取
很多情况下,在加入导航条的时候,我在添加其他组件的时候会出现尺寸不对的情况,这里有一个简单快捷的方法,在有导航条的控制器下加入
self.edgesForExtendedLayout = UIRectEdgeNone; //view不需要拓展到整个屏幕
此方法在ios7之后才使用,ios7之前还需要找其他的方法,但是话说回来,现在差不多已经没有ios6系统了,用这个方法基本上可以快速解决问题
正常效果说了这么多话,其实就一个属性
self.edgesForExtendedLayout = UIRectEdgeNone
此方法用处很广泛,但是此方法有一个弊端,会在nvgation和tabbar后面显示出两个黑色区域,导致此控制器的导航栏和tabbar较其他略显暗黑,如图
UIRectEdgeNone模式下的导航栏明显较黑下面是另一个页面的效果
另一页面效果
查看三维图
三维图
导航栏顶部和tabbar底部多出一个黑色区域,这个区域是
UIVisualEffectBackdropView
具体解决办法是设置导航栏和tabbar的背景透明属性为NO,代码如下
self.navigationController.navigationBar.translucent = NO;
self.tabBarController.tabBar.translucent = NO;
网友评论