以编程方式添加带有自动布局的 UITableView

Posted

技术标签:

【中文标题】以编程方式添加带有自动布局的 UITableView【英文标题】:Adding UITableView with autolayouts programmatically 【发布时间】:2013-10-21 11:04:02 【问题描述】:

当我以编程方式添加 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?

【问题讨论】:

我正在尝试同样的事情。 【参考方案1】:

试试这个

self.tableView = [[UITableView alloc] initWithFrame:CGRectZero];

【讨论】:

我认为这没有任何影响。

以上是关于以编程方式添加带有自动布局的 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式使用自动布局添加自定义视图

以编程方式使用自动布局实现带有子视图的 uiview 子类

以编程方式在子类 UIView 的子视图上自动布局

如何以编程方式使用自动布局以编程方式添加 UIview?

使用自动布局以编程方式添加背景图像视图

以编程方式将自动布局添加到肋骨中添加的现有自动布局视图