只需將控制器的子視圖UIView
添加到當前控制器視圖並添加約束條件,以使用instantiateViewControllerWithIdentifier
創建的子控制器覆蓋整個區域。下面的代碼適用於iOS 7. iOS 8將子視圖的大小設置爲左上角的一小部分。 iOS 7完成了我期望的功能,即在父視圖的整個大小上調整子視圖的大小。我會附上一張圖片,但沒有代表。將translatesAutoresizingMaskIntoConstraints
設置爲YES可以解決問題,但視圖不遵守約束,並在方向更改或調整大小更改時調整大小。子視圖不適用於iOS 8,XCode 6(6A313)的約束。 Works iOS 7
spotCheckStoresViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"visitStoresViewController"];
spotCheckStoresViewController.mainViewController = self;
spotCheckStoresViewController.dataMode = kDataModeViews;
spotCheckStoresViewController.lastRow = [self getViewsLastRow];
spotCheckStoresViewController.view.tag = -200;
currentView = spotCheckStoresViewController.view;
[self addChildViewController:spotCheckStoresViewController];
[self.view insertSubview:currentView belowSubview:_menuViewController.view];
currentView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:currentView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:currentView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:currentView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:currentView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]];
//[self.view updateConstraints];
//[self.view layoutIfNeeded];
我試過設置子視圖的框架。任何想法可能在iOS 8中改變了以這種方式使用的約束行爲?
我已通過添加其他子的UIView到控制器主要UIView的IB中,對設置約束粘在前置,頂部和底部,然後將我原來的子視圖解決了這個問題我自己給那個孩子UIView。似乎要完成這項工作。 – bavelasq 2014-09-12 22:22:16
在iOS 8中增加了一些新的佈局指南,「leftLayoutGuide」和「rightLayoutGuide」。你可以嘗試設置你的約束條件,但請記住,這在iOS 8之前是不可用的。 – 2014-09-12 22:26:27
這與您的問題無關,但您忘記調用'didMoveToParentViewController:'。 – matt 2014-09-12 22:27:23