Проблема с Auto Layout на iOS 8 (код отлично работает на iOS 7)

У меня есть приложение, которое было создано с использованиемauto-layout и все еще работает, как и ожидалось, когда я запускаю его на своем устройстве iOS 7, однако, когда я запускаю его на устройстве iOS 8, некоторые из моих ограничений становятся немного странными.

Я действительно столкнулся с подобной проблемой в другом приложении, но это не было большой проблемой. Теперь я начинаю задаваться вопросом, является ли это ошибкой в ​​iOS 8 SDK или есть новый способ обработки автоматического макета в iOS8, о котором я не знаю.

Вот мои настройки: у меня естьUIView сUIImageView встроенный в него. И представление, и представление изображения имеют ограничения, прикалывающие их дно, передние и задние края к их суперпредставлениям с константой = 0.

UIView также его верхний край прикреплен к его суперпредставлению, и у меня есть IBOutlet, связанный с ограничением, чтобы настроить его программно.UIImageView имеет четвертое ограничение, фиксирующее его высоту к высоте устройства (в моем случае 568).

Вот поведение, которое я ожидаю / достигаю в iOS 7: я пытаюсь уменьшить высоту представления контейнера и заставить обрезать верхнюю часть представления изображения без изменения соотношения сторон (похоже, что вы обрезали верхняя часть изображения отключена) ... вот почему я закрепил высоту изображения и нижний край.

Что на самом деле происходит в iOS8: вид контейнера сжимается, как и ожидалось (он остается прикрепленным к сторонам и дну, а высота уменьшается).UIImageView ведет себя так, как если бы он имел ограничение по верхнему пространству с cosntant == 0. Вместо того, чтобы обрезать верхнюю часть изображения, все изображение сжимается вниз. Так как у меня есть изображение вAspectFit В этом режиме стороны также сжимаются, чтобы сохранить соотношение сторон (но само изображение остается прикрепленным к переднему, заднему и нижнему краям, как и должно быть).

Как я это делаю: у меня есть уведомление, которое запускается из другой части моего кода для настройки ограничения верхнего пространства, подключенного к IBOutlet. Метод, который он вызывает, действительно довольно прост:

- (void) setTopSpaceForContainerView:(NSNotification*) notif{
    containerView_TopSpace.constant = [[notif.userInfo objectForKey:kTopSpace] intValue];
    [self.view setNeedsUpdateConstraints];
    [self.view setNeedsLayout];
}

У кого-нибудь еще есть подобный опыт? Я пытаюсь найти обходной путь, но iOS 8, похоже, полна решимости уменьшить мое изображение.

Благодаря тонну!

Ответы на вопрос(2)

Ваш ответ на вопрос