2016-01-21 12 views
1

Мне нужно, чтобы обновил ограничение в моем проекте, чтобы соответственно отрегулировать высоту представления (на основе разных подзонов). Я сделал выход ограничения в моем контроллере, но столкнулся с проблемой.Обновление ограничений программно iOS

, когда я пытаюсь обновить это в первый раз (в viewDidLoad или viewWillAppearметод), он не обновляется. и если я обновляю его после (из-за некоторого вращения и т. д.), то это делается правильно. Пожалуйста, скажите мне, почему это происходит и каков правильный путь/место для этого? (Поскольку я чувствую, что ограничение обновляется где-то снова после моего обновления в viewWillAppear/DidLoad).

Я попробовал view.layoutIfNeeded, но это не помогло. Я думаю, что это имеет какое-то отношение к viewDidLoad и другим методам делегирования viewController.

P.S. Я также использую классы размера в моем проекте, но я думаю, что это не имеет никакого отношения к этому, поскольку он работает в некоторых случаях.

ответ

2

Обновление ограничений может не работать в viewWillAppear. Будет, однако, работать в viewDidAppear.

Есть другие места, которые вы можете перезаписывать, такие как: (с использованием static BOOL shouldRefreshView = NO; впервые)

- (void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    if(shouldRefreshView) { 
     shouldRefreshView = NO; 
     [self.view layoutIfNeeded]; 
    } 
} 
+0

Спасибо. Он работал (Y) –

+0

Какой вариант вы выбрали? 'viewDidAppear' или' viewDidLayoutSubviews'? – SwiftArchitect

+0

Я выбрал "viewDidLayoutSubviews". Я думаю, что это более уместно. + я не использовал эту переменную shouldRefreshView. @SwiftArchitect –