uitableviewcell在设置navigationBarHidden = YES和自定义栏视图后获得偏移量

时间:2016-10-25 09:24:16

标签: ios objective-c uitableview uinavigationbar

THE BUG PICTURE

这张图片是错误图片,我的代码如下:

- (void)viewDidLoad
{
[super viewDidLoad];

self.navigationController.navigationBarHidden = YES;
naviview = [[UIImageView alloc] init];
naviview.backgroundColor = [UIColor colorWithHexString:@"fcfcfc"];
naviview.frame = CGRectMake(0, 0, VIEW_BOUNDS.width, 64);
[self.view addSubview:naviview];

self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 64, VIEW_BOUNDS.width, self.view.bounds.size.height-62-TABBARHEIGHT) style:UITableViewStylePlain];

self.tableView.showsHorizontalScrollIndicator = NO;
self.tableView.showsVerticalScrollIndicator = NO;
self.tableView.backgroundColor = [UIColor grayColor];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
[self.view insertSubview:_tableView belowSubview:self.naviview];

}

如果我使用[self.view insertSubview:_tableView belowSubview:self.naviview];,则单元格具有偏移量,如果使用[self.view addSubview:_tableView]则为buf,则单元格将是正确的。我想知道导致抵消的原因,有人可以告诉我吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

因为当你使用addSubview时,它会被添加到superview上,而tableview的框架将用视图的框架计算。但是在insertSubView中添加了navView。可能有可能使用不同的帧计算tableView帧。

您可以通过将tableView框架高度设为0来验证它,然后尝试使用insertSubView