2014-01-06 2 views
0

У меня есть этот код в viewDidLoadИзменение NSLayoutConstraint не работает в iOS7

int height = 367 - self.vLayout.frame.size.height; 
     int adjustHeight = height/2; 
     self.csPanelBottom.constant = adjustHeight - 2; 
     if (height % 2 != 0) { 
      adjustHeight += 1; 
     } 
     self.csPanelTop.constant = adjustHeight + 2; 

, который будет регулировать панель центрировать экран. Все работает нормально, я получаю правильное значение adjustHeight как для iOS6, так и для iOS7

, но когда я устанавливаю константу на iOS7, она не обновляется. Макет все тот же.

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

Любая идея, что может вызвать эту проблему, и как я могу ее решить? Спасибо.

+0

ты звонишь [самоуправления setNeedsLayout] после изменения константы? – Shai

+0

Нет, я не называю это на любых страницах – SaintTail

+1

Так что вы должны попробовать это. Добавьте [self setNeedsLayout] после установки константы. – Shai

ответ

3

Скорее всего, для того, чтобы изменения заполнения необходимо добавить

[self.view setNeedsLayout]; 
[self.view layoutIfNeeded]; 

Однако, это не правильный способ, чтобы выровнять вид на центр. Правильный путь добавление центрирующего ограничения, либо в Interface Builder:

enter image description here

или в коде:

// Replace viewNeedingCenter and containerView with your actual views 
[containerView addConstraint: 
[NSLayoutConstraint constraintWithItem:viewNeedingCenter 
           attribute:NSLayoutAttributeCenterY 
           relatedBy:NSLayoutRelationEqual 
           toItem:containerView 
           attribute:NSLayoutAttributeCenterY 
          multiplier:1.0 constant:0]]; 
Смежные вопросы