美文网首页恩美第二个APP项目
iOS 视图从导航栏以下布局,使用edgesForExtende

iOS 视图从导航栏以下布局,使用edgesForExtende

作者: fulen | 来源:发表于2016-11-02 11:59 被阅读60次
    没穿秋裤

    为了项目的重用性,昨天封装了一个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;
    

    参考自:http://stackoverflow.com/questions/19239606

    相关文章

      网友评论

        本文标题:iOS 视图从导航栏以下布局,使用edgesForExtende

        本文链接:https://www.haomeiwen.com/subject/dcuvuttx.html