4

当我以编程方式添加 UITableView 并使用 Autolayouts 时,我通常会编写如下代码:

self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)
                                                           style:UITableViewStylePlain];
[self.view addSubview:self.tableView];
self.tableView.translatesAutoresizingMaskIntoConstraints = NO;
NSDictionary *views = @{@"tableView": self.tableView};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[tableView]|"
                                                                 options:0
                                                                 metrics:nil
                                                                   views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[tableView|"
                                                                  options:0
                                                                  metrics:nil
                                                                    views:views]];

UITableView 的默认初始化器需要定位一些 CGRect ,但是当我们使用 AutoLayout 时,不需要编程设置框架。

  • 我是否正确添加了 UITableView?
  • 有没有办法避免“虚拟”CGRect?
4

1 回答 1

4

尝试这个

self.tableView = [[UITableView alloc] initWithFrame:CGRectZero];
于 2013-10-21T11:10:05.783 回答