美文网首页
记录UINavigationBar 透明设置以及对 frame

记录UINavigationBar 透明设置以及对 frame

作者: Dxc_iOS | 来源:发表于2017-06-04 13:32 被阅读42次
    记录UINavigationBar 透明设置以及对 frame 的影响

    1.iOS7 之后,所有的 UINavigationBar 默认都是透明的了,同时 View Controller 全部都使用全屏的 layout;
    2.创建一个lab;

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 40)];
    label.text = @"Hello";
    [self.view addSubview:label];

    结果:label藏在导航栏下面。
    解决办法1:

    -(void)viewDidLoad {
    self.edgesForExtendedLayout = UIRectEdgeNone;
    }

    解决办法2:把导航栏改成不透明:

    self.navigationBar.translucent = NO;

    3.不透明的导航栏,如果你还想让 View 充满全屏的话:

    self.extendedLayoutIncludesOpaqueBars = YES;

    4.对于 UITableView 来说:不需要什么设置就可以得到正确的结果;即导航栏是透明的, TableView 的 Cell 也正确的显示了。
    原因在于 automaticallyAdjustsScrollViewInsets。这个参数默认设置为 YES,其作用是把子 View 中最下层的 ScrollView 的 UIEdgeInsets 进行调整,在这里是设置成 (64, 0, 0, 0),这样 TableView 的 Cell 位置就正确地显示在导航栏下方的位置了。
    如果你强制把 automaticallyAdjustsScrollViewInsets 设置成 NO,TableView 的第一个 cell 跑到导航栏下面去.

    5.默认透明的导航栏,在 VC 中添加一个 WebView 时:WebView 顶部的位置没有问题,但是底部的位置出现错乱了
    导致没办法滚动到网页的最低端了。解决方法是:

    self.extendedLayoutIncludesOpaqueBars = YES;

    记录来源:

    https://skyline75489.github.io/post/2015-11-27_uinavigation_bar_frame_affect.html

    相关文章

      网友评论

          本文标题:记录UINavigationBar 透明设置以及对 frame

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