我在调整UITableView以适应UINavigationBar和UITabBar之间遇到了很多麻烦。我的实现涉及在viewDidAppear()中创建自定义框架,然后将UITableView设置为适当的框架。虽然这种解决方案运行良好,但效果并不理想 - 每次加载视图时屏幕都会有一点痉挛。我认为问题是由于UITableViewb成为全屏,因为它想要,然后我在用户面前调整它的大小。但是,我不知道如何实现我想要的:调整UITableView的大小以适应屏幕。这是我在viewDidAppear()中的实现:
- (void)viewDidAppear:(BOOL)animated{
[self.view.superview addSubview:navigationBar];
CGRect frame = self.view.frame;
frame.size.height = self.view.frame.size.height - navigationBar.frame.size.height;
frame.origin.y = self.view.frame.origin.y + 44;
self.tableView.frame = frame;
[super viewDidAppear:animated];
}
在录制视频时很难看到效果,在GIF格式中可能很糟糕,但here's a little GIF我记录了闪光被诱导。
如果我在viewWillAppear()中使用相同的代码,则结果如下:
谢谢!
答案 0 :(得分:1)
我遇到了这个问题,原来这是视图上的自动布局问题。在Interface Builder中,切换到File Inspector属性视图,并确保未选中“Use Autolayout”。
在此之后,您可以在viewWillAppear方法中持续调整UITableView的大小,而不会出现故障。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
CGRect frame = [tableView frame];
frame.size.height = 365;
self.tableView.frame = frame;
}
答案 1 :(得分:0)
为什么使用viewDidAppear
,当调用此方法时,您的视图会在屏幕上显示,那么您当然会收到一个小故障。
您需要做的是将方法从viewDidAppear
更改为viewWillAppear
。