Xcode показывает конфликтующие ограничения

У меня есть контроллер представления, состоящий в основном из 2 представлений. Один из них имеет ведущую, конечную и нижнюю привязку, выровненную с суперпредставлением, и пропорциональную высоту для суперпредставления (0,25), а также представление прокрутки, которое выравнивает ведущую верхнюю и конечную точки с суперпредставлением/безопасной областью и внизу другого представления.

У меня есть представление, определенное в xib-файле, который я создаю несколько раз, используя Bundle.main.loadNibNamed("VariantResultSlide", owner: self, options: nil)?.first, и добавляю их в массив slides. Я хочу добавить их в свой ScrollView:

for i in 0 ..< slides.count {
    scrollView.addSubview(slides[i])

    NSLayoutConstraint.activate([
        slides[i].leadingAnchor.constraint(equalTo: (i==0) ? scrollView.leadingAnchor : slides[i-1].trailingAnchor),
        slides[i].topAnchor.constraint(equalTo: scrollView.topAnchor),
        slides[i].bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
        slides[i].widthAnchor.constraint(equalTo: scrollView.widthAnchor),
        slides[i].heightAnchor.constraint(equalTo: scrollView.heightAnchor)
    ])
    if (i==slides.count-1) {
        NSLayoutConstraint.activate([slides[i].trailingAnchor.constraint(equalTo: scrollView.trailingAnchor)])
    }
    self.updateResultSlides(index: i, vehicle: orderedVehiclesList[i])
}

Но затем Xcode выдает мне такие ошибки, как:

2019-04-11 13:57:07.219263+0200 FleetView[545:190663] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
    (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSAutoresizingMaskLayoutConstraint:0x282cecbe0 h=-&- v=-&- FleetView.VariantResultSlide:0x107f214a0.height == UIScrollView:0x102919200.height + 99   (active)>",
    "<NSLayoutConstraint:0x282c92300 FleetView.VariantResultSlide:0x107f214a0.height == UIScrollView:0x102919200.height   (active)>"
)

и слайды слишком большие. Но я не могу найти место, где я установил бы для них другое ограничение. Почему это происходит?

Вы пробовали: slides[i].translatesAutoresizingMaskIntoConstraints = false?

Suh Fangmbeng 11.04.2019 14:22

да, см. ниже, тай

Ginso 11.04.2019 14:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
337
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваше представление реализует ограничения top, bottom и height, поэтому, очевидно, его суперпредставление необходимо изменить, но это невозможно из-за ограничений, созданных автоматически из маски автоматического изменения размера. Отключите его в своем супервизоре с помощью

yourViewsSuperview.translatesAutoresizingMaskIntoConstraints = false

хорошо, это сработало, сделав это для самих слайдов, а не для супервизора

Ginso 11.04.2019 14:19

Другие вопросы по теме