【发布时间】:2014-05-25 12:14:02
【问题描述】:
我有一个使用此方法创建的UITableView(在UIViewController 内):
- (void) viewDidLayoutSubviews {
if (!self.tableView) {
self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 120, self.view.bounds.size.width, self.view.bounds.size.height-120) style:UITableViewStylePlain];
self.tableView.superview.autoresizingMask= NO;
// [self.tableView setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleTopMargin];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.backgroundColor = [UIColor blueColor];
self.edgesForExtendedLayout = UIRectEdgeNone;
[self.tableView setShowsHorizontalScrollIndicator:NO];
[self.tableView setShowsVerticalScrollIndicator:NO];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
[self.view addSubview:self.tableView];
}
}
当应用程序进入后台并重新加载视图控制器时,tableView 会由于边界的变化而降低(我认为)。但是,我尝试在情节提要中关闭自动布局,将self.view 和self.tableView 的autoresizesSubviews "BOOL" 设置为,甚至尝试更改tableView 上的约束。每次视图加载时,内容都会移动。此外,我已将启动放入viewDidLoad,但实际尺寸并未映射到屏幕上。在viewDidLayoutSubviews 中启动后如何强制tableView 保持固定?
【问题讨论】:
-
提示:您不应该在
viewDidLayoutSubviews中初始化您的视图。在viewDidLoad中初始化你的tableView,然后在viewDidLayoutSubviews中设置frame -
所以当边界改变时框架会更新?还是会因为被移动而受苦?
-
没错,
viewDidLayoutSubviews每次边界变化时都会被调用,因此在该方法中设置框架将确保您的 tableView 始终根据当前边界调整大小。 -
@michaels。谢谢你,你要不要做一个象征性的回答,我会把它标记为正确的?
标签: ios objective-c uitableview frame bounds