关于NavigationBar透明属性问题

Translucent

关于这个NavigationBar透明属性问题其实很早就接触到了,可能是过了太久没怎么接触UI,一些细节没法一下想到位,在此记录下,方便以后查阅!

当设置translucent = YES的时候。controller中self.view的原点是从导航栏左上角开始计算

当设置translucent = NO的时候。controller中self.view的原点是从导航栏左下角开始计算

AutomaticallyAdjustsScrollViewInsets

controller默认的automaticallyAdjustsScrollViewInsets属性为YES,这个属性的一般与默认的transluent一起使用,self.view上的scrollView视图会自动调节其内部的contentInset以达到scrollView前面的内容不会被navigationBar遮住(因为当transluent为YES的时候,设置坐标原点是从屏幕顶部开始)

Edges

其实很早以前开发的时候,遇到这个问题比较模棱俩可,主要是因为naigationBar的translucent属性在整个项目中不一定是一个固定的值(尤其是在设置子控件高度的情况下),遇到这种情况,可以借助Edges解决,当然默认的automaticallyAdjustsScrollViewInsets是为YES的,translucents就不需要管了

[self.tableViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(0,0,0,0));

}];

你可能感兴趣的:(关于NavigationBar透明属性问题)