1.这个属性YES or NO 决定是否需要导航条/TabBar带有半透明效果
官方解释
UINavigationBar/UITabBar的translucent属性解释:默认为YES,可以通过设置NO来强制使用非透明背景,如果导航条使用自定义背景图片,那么默认情况该属性的值由图片的alpha(透明度)决定,如果alpha的透明度小于1.0值为YES。如果手动设置translucent为YES并且使用自定义不透明图片,那么会自动设置系统透明度(小于1.0)在这个图片上。如果手动设置translucent为NO并且使用自定义带透明度(透明度小于0)的图片,那么系统会展示这张背景图片,只不过这张图片会使用事先确定的barTintColor进行不透明处理,若barTintColor为空,则会使用UIBarStyleBlack(黑色)或者UIBarStyleDefault(白色)
这是由于苹果对滚动视图的特殊性进行处理:对于类ScrollView,系统默认默认控制器属性automaticallyAdjustsScrollViewInsets默认为YES。
请注意:iOS11开始,苹果摒弃了automaticallyAdjustsScrollViewInsets属性,改由contentInsetAdjustmentBehavior(枚举值)控制,下面会有详细的解释。
-
contentInsetAdjustmentBehavior定义及使用(适用于iOS11+,替代automaticallyAdjustsScrollViewInsets)
如果只想单纯地设置导航条不偏移导航条+状态栏和Tabbar高度,不想看解释,可以直接使用该宏定义解决方法适配的问题(宏定义来源:http://www.jianshu.com/p/352f101d6df1):
还有viewController的edgesForExtendedLayout属性,这样三个属性加frame的设置直接影响了view界面是否会下移64的高度
1.UINavigationBar/UITabBar的translucent半透明属性
2.viewController的edgesForExtendedLayout属性
3.类ScrollView的automaticallyAdjustsScrollViewInsets属性(iOS1前)与contentInsetAdjustmentBehavior(iOS11之后出现的枚举值)这些个View :scrollView tableView collectionView webView
4.frame的origin的y的值