我使用下面的代码到一个覆盖视图添加到视图:添加子视图的UITableView与自动布局不设置它的框架
UIView *overlayView = [[UIView alloc] init];
overlayView.backgroundColor = [UIColor redColor];
[self.view addSubview:overlayView];
overlayView.translatesAutoresizingMaskIntoConstraints = NO;
NSDictionary *views = NSDictionaryOfVariableBindings(overlayView);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[overlayView]|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[overlayView]|" options:0 metrics:nil views:views]];
如果我在UIViewController
的viewDidLoad
方法将此代码放在它工作正常。但是,如果我在UITableViewController
中执行相同操作,则覆盖视图将获得零帧。
我检查了视图,我可以将约束添加正确,并且它们是活动的。但出于某种原因,他们似乎被忽略了。
我没有收到任何错误或警告。
我在这里错过了什么?
PS:我知道我可以用self.view.bounds
作为框架实例化叠加视图,并且它可以工作。不过,我需要使用自动布局。
是的,我想这是这样的。我确实以其他方式解决了这个问题,但是我更希望能够使用自动布局。 – pajevic
在iOS 11中,您可以使用表视图的frameLayoutGuide属性。 –