美文网首页
self.view.bounds在tableView中屏幕适配问

self.view.bounds在tableView中屏幕适配问

作者: 鄂北 | 来源:发表于2017-09-13 14:16 被阅读46次
        在开发中最重要的就是屏幕适配问题了,Masonry是最常用的第三方库了。在最近开发中,小编遇到了件很奇怪的问题,在这里记录下。
        先简单说下问题吧:小编的导航栏和标签栏用的是系统自带的,大家都知道用了系统自带的导航栏和标签栏可能会导致坐标出现一些问题,一般都会设置self.navigationController.navigationBar.translucent = NO;
    self.tabBarController.tabBar.translucent = NO;
    

    这两个属性,那么在使用Masonry适配时,设置控件的上下左右距离self.view上下左右都为0,那么控件的顶部就会在导航栏下面,控件的底部在标签栏上面。
    但是小编在给tableView屏幕适配时用了self.view.bounds出现了一些怪异的问题
    先看下问题代码

        self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds     style:UITableViewStylePlain];
        self.tableView.dataSource = self;
        self.tableView.delegate = self;
        [self.view addSubview:self.tableView];
    

    这样一看是没有问题,可是一调试会发现tableView底部总会有一部分内容被标签栏所遮住,即使设了self.tabBarController.tabBar.translucent = NO;也没有用。
    最后改成这样就可以了

        self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
        self.tableView.dataSource = self;
        self.tableView.delegate = self;
        [self.view addSubview:self.tableView];
        [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.right.top.bottom.equalTo(self.view);
        }];
    

    frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
    bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点)
    导航栏透明度能影响bounds坐标,标签栏不能。如果用Masonry就都能影响

    相关文章

      网友评论

          本文标题:self.view.bounds在tableView中屏幕适配问

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