Cha*_*les 6 xcode objective-c interface-builder autolayout
我已经阅读了一些关于使用AutoLayout的教程,但我似乎无法弄清楚如何实现我觉得应该非常简单的东西.我正在为3.5英寸和4英寸iPhone/iPod Touch屏幕设计应用程序.这是一个简单的标签栏应用程序,其中UITableView填满了每个标签的全部内容,如下所示:

无论屏幕是3.5英寸还是4英寸,我都希望UITableView锁定到屏幕的边缘.我目前在4英寸屏幕上的工作正常,但在3.5版本中,UITableView超出了屏幕的宽度.
我已经尝试阅读一些AutoLayout教程以及摆弄Interface Builder约束,但没有成功.我很感激您提供的任何帮助.
您需要将UITableView父级的所有边缘附加UIView,然后UITableView将展开或缩小以填充UIView设备上的内容.这将使其在所有iDevices(包括iPad)上看起来都是合适的尺寸.如下面的屏幕截图所示,您可以点击所有虚线红色指南,确保边距设置为0(触摸两侧):

你也可以Ctrl左键拖动,向右拖动,向上拖动,向下拖动UITableView选择"前导空间到容器","尾随空间到容器","顶部空间到顶部布局指南"和"底部空间到底部布局"分别.
或者,您可以使用可视格式语言(VFL)(以下代码UIViewController假定您UITableView的自动@synthesized @property命名tableView):
/* Turn off springs/structs */
self.tableView.translatesAutoresizingMaskIntoConstraints = NO;
/* Leading and trailing constraints */
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_tableView]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableView)]];
/* Top and bottom constraints */
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_tableView]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableView)]];
Run Code Online (Sandbox Code Playgroud)
...或者如果你真的想要明确(并且喜欢打字):
/* Leading constaint (could use NSLayoutAttributeLeft here as well) */
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.tableView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1 constant:0]];
/* Trailing constraint (could use NSLayoutAttributeRight here as well) */
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.tableView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]];
/* Top constraint */
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.tableView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:0]];
/* Bottom constraint */
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.tableView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1 constant:0]];
Run Code Online (Sandbox Code Playgroud)
有了这一切,重要的是,UITableView是的一个孩子view的UIViewController(它最有可能的是).view默认情况下将按预期填充屏幕,并且使用上述所有方法,您要求布局紧贴最大化视图的边缘.