隐藏导航条后,TableViewCell的位置

2017-11-27  本文已影响5人  codermali

今天碰到一个问题,就是发现在一个界面,隐藏导航控制器之后,TableView添加进控制器的View后,会有一个20的下滑,本来不确定时状态栏的高度;又在iPhoneX上运行了一下,发现下滑44,于是确定了.但是为什么会有这么个下滑呢.

控制器上的懒加载
#pragma mark ====================    懒加载    ====================
- (MLPersonalCenterHeaderView *)headerView
{
    if (!_headerView)
    {
        _headerView = [[MLPersonalCenterHeaderView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT * 0.2)];
        _headerView.delegate = self;
    }
    return _headerView;
}
- (MLPersonalCenterView *)personalCenterView
{
    if (!_personalCenterView)
    {
        _personalCenterView = [[MLPersonalCenterView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT) style:UITableViewStylePlain];
        _personalCenterView.toolDelegate = self;
    }
    return _personalCenterView;
}


//TableView中的自定义
- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style
{
    if (self = [super initWithFrame:frame style:style])
    {
        self.dataSource = self;
        self.delegate = self;
        self.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);
        self.tableHeaderView = nil;
        self.tableFooterView = nil;
        //设置行高
        self.rowHeight = 44;
        //取消自适应
        self.estimatedRowHeight = 0;
        self.estimatedSectionHeaderHeight = 0;
        self.estimatedSectionFooterHeight = 0;
        self.backgroundColor = [UIColor clearColor];
        self.contentInset = UIEdgeInsetsMake(SCREEN_HEIGHT * 0.2, 0, 0, 0);
        
        //初始化数据
        _imageAry = @[@[@"钱包", @"临时工",  @"预约", @"商品", @"收藏"], @[@"设置"]];
        _titleAry = @[@[@"钱包", @"临时工", @"预约", @"商品", @"收藏"], @[@"设置"]];
    }
    return self;
}

这样就实现了一个效果

Simulator Screen Shot - iPhone X - 2017-11-27 at 11.44.24.png

最后发现,是因为:如果TableView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT),如果同时隐藏了导航条,那么tableView中cell的会让出状态栏的高度.就是说,如果第一个cell的frame是CGRectMake(0, 20, SCREEN_WIDTH, 44),而不是CGRectMake(0, 0, SCREEN_WIDTH, 44).就酱...

上一篇下一篇

猜你喜欢

热点阅读