Controller view的frame 默认 是全屏,位置是从 屏幕顶点开始,高度为屏幕高度 。如下图:
image.png
由上图可以看出,导航栏为半透明状态,且它的颜色 是以当前控制器视图的背景颜色为基色。而NavigationController 的 Navigationbar 有一个属性,translucent,意思为透明度,默认效果为 yes(半透明,即上图状态)。
那么 如果想让Controller的视图的位置 是从导航栏下方开始的,应该怎么做呢?
-
设置导航栏的 translucent 的属性 为 No。如下图:
image.png
当导航栏的透明度设置为No 后,view 的起始点是从(0,64)即 从导航栏的下方开始的。高度 为屏幕的高度 减去 导航栏的高度。但是 结束为止还是到了 tabbar 的下方。
- Controller 有个属性 edgesForExtendedLayout ,而这个属性的默认值 为 UIRectEdgeAll,为全屏撑开,可以在Controller中重新这个的get方法。
-(UIRectEdge)edgesForExtendedLayout{
return UIRectEdgeNone;
}
12.png
网友评论