Я создал пользовательский контейнер viewController, используя модель «родитель-потомок». В родительском я создаю дочерний элемент следующим образом:
// Show Friends view of childs' controller AddFriendViewController
self.friendVC = [[AddFriendViewController alloc] init];
[self addChildViewController:self.friendVC];
self.friendVC.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
[self.view addSubview:self.friendVC.view];
[self.friendVC didMoveToParentViewController:self];
А затем в дочернем (frienVC) «loadView» я инициализировал дочерний вид следующим образом, а также создал UIView (topBarView), который буду отображать на дочернем VC:
- (void)loadView {
self.view = [[UIView alloc]init];
self.view.backgroundColor = [UIColor colorWithHex:SCREEN_ADDFRIENDVIEWCONTROLLER_COLOR];
// Create topBar view
self.topBarView = [[UIView alloc] init];
[self.containerView addSubview:self.topBarView];
}
Теперь я использую ограничения автоматического макета, чтобы расположить «topBarView» в дочернем представлении. И я заметил кое-что очень странное. В « updateViewConstraints
», где я установил положение и размер «topBarView», кадр дочернего представления равен (0,0,320,568), что совершенно правильно. Но в методе "viewDidAppear:
", который вызывается ПОСЛЕ метода "updateViewConstraints
", кадр просмотра дочернего элемента внезапно изменился на (284,160,0,0), что является ПОЛНОСТЬЮ случайным кадром.
Почему система устанавливает кадр дочернего кадра просмотра после вызова метода updateViewConstraints?