2014-11-20 4 views
0

У меня есть простой ViewController, который содержит только вид по умолчанию с фоновым изображением, размещенным на нем, я следующий updateViewConstraints метода, который прекрасно работает на iOS 7 устройствах (без вызова методов setNeedsXXX) :autolayout не работает с iOS8

-(void) updateViewConstraints { 

[super updateViewConstraints]; 

[self.view removeConstraints:self.view.constraints]; 
NSDictionary *viewsDict = @{@"bgImage":self.bgImageView}; 

NSArray * constraints; 
constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[bgImage]|" options:0 metrics:nil views:viewsDict]; 
[self.view addConstraints:constraints]; 

constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[bgImage]|" options:0 metrics:nil views:viewsDict]; 
[[self.view addConstraints:constraints]; 

} 

однако, этот метод не работает, как ожидалось на iOS 8 устройств, фоновое изображение сдвигается вверх и не укладывались на месте.

любые идеи были бы высоко оценены.

ответ

1

Эта строка: [self.view removeConstraints:self.view.constraints]; удаляет больше на iOS 8, чем на iOS 7. Легкий способ исправить это, чтобы добавить массив, содержащий ограничения, которые вы добавляете в представление, и удалить только те ограничения.

Возможно, вы даже можете полностью удалить эту строку, но это зависит от вашего приложения.

+0

но я все же хочу удалить ограничения по умолчанию, которые появляются из раскадровки, как их удалить? – JAHelia

+0

Попробуйте установить 'translatesAutorezisingMasksToContraints' на' NO'. И проверьте через NSLog, если есть непредвиденные ограничения. Если это так, добавьте ограничения в раскадровку и установите флажок «Удалить при сборке» или что-то в этом роде. – dasdom

Смежные вопросы