我使用下面的代碼到一個覆蓋視圖添加到視圖:添加子視圖的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屬性。 –