Невозможно одновременно удовлетворить ограничениям

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

2013-07-23 12: 45: 49.936 Camera_App1 [30668: 907] Невозможно одновременно удовлетворить ограничения. Вероятно, хотя бы одно из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте это: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательные ограничения или ограничения и исправить его. (Примечание. Если вы видите NSAutoresizingMaskLayoutConstraints, который вы не понимаете, обратитесь к документации для свойства UIView, переводимой вAutoresizingMaskIntoConstraints)

(
    "<NSAutoresizingMaskLayoutConstraint:0x1f5b3d10 h=--& v=--& V:[UIView:0x1f5a2f70(460)]>",
    "<NSLayoutConstraint:0x1f5a3c80 V:[UIView:0x1f5a31b0]-(385)-|   (Names: '|':UIView:0x1f5a3120 )>",
    "<NSLayoutConstraint:0x1f5a3f80 V:|-(0)-[UIView:0x1f5a3120]   (Names: '|':UIView:0x1f5a2f70 )>",
    "<NSLayoutConstraint:0x1f5a3f40 V:[UIView:0x1f5a3120]-(63)-|   (Names: '|':UIView:0x1f5a2f70 )>",
    "<NSLayoutConstraint:0x1f5a3bc0 V:|-(61)-[UIView:0x1f5a31b0]   (Names: '|':UIView:0x1f5a3120 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x1f5a3c80 V:[UIView:0x1f5a31b0]-(385)-|   (Names: '|':UIView:0x1f5a3120 )>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2013-07-23 12:45:58.697 Camera_App1[30668:907] media type=public.image
2013-07-23 12:45:58.701 Camera_App1[30668:907] global=public.image
2013-07-23 12:45:58.858 Camera_App1[30668:907] 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) 
(
    "<NSLayoutConstraint:0x1f5a3c80 V:[UIView:0x1f5a31b0]-(385)-|   (Names: '|':UIView:0x1f5a3120 )>",
    "<NSLayoutConstraint:0x1f5a3f80 V:|-(0)-[UIView:0x1f5a3120]   (Names: '|':UIView:0x1f5a2f70 )>",
    "<NSLayoutConstraint:0x1f5a3f40 V:[UIView:0x1f5a3120]-(63)-|   (Names: '|':UIView:0x1f5a2f70 )>",
    "<NSLayoutConstraint:0x1f5a3bc0 V:|-(61)-[UIView:0x1f5a31b0]   (Names: '|':UIView:0x1f5a3120 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x1f53a430 h=--& v=--& V:[UIView:0x1f5a2f70(460)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x1f5a3c80 V:[UIView:0x1f5a31b0]-(385)-|   (Names: '|':UIView:0x1f5a3120 )>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

Ответ 1

Ошибка в том, что она говорит, и дает довольно четкие инструкции для начала отладки. Есть два препятствия, которые конфликтуют. Каждый из инструкций во время выполнения Auto Layout выполняет что-то, что противоречит другому.

Если вы создаете и добавляете представления программно, то вероятность того, что атрибуты автоматического изменения размера были автоматически переведены в ограничения автоматической компоновки.

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

myProgrammaticView.translatesAutoresizingMaskIntoConstraints = NO;

Ответ 2

У меня была такая же проблема, после нескольких часов поиска выяснилось, что проблема заключалась в том, что в строке состояния вызова или в строке состояния hotspot был включен (горячая точка включена, при телефонном вызове), чтобы устранить проблему, в appdelegate я добавлено:

    func application(application: UIApplication, willChangeStatusBarFrame newStatusBarFrame: CGRect) {
    let windows = UIApplication.sharedApplication().windows

    for window in windows {
        window.removeConstraints(window.constraints)
    }
}

Ответ 3

Я знаю, что эта тема очень старая, но это мой опыт и решение.

Выбрать представление (UILabel, UIImage и т.д.) Редактоp > Вывод > (Выбрать...) в Редактор надзорa > Устранение проблем с автоматической компоновкой > Добавить недостающие ограничения

Эта ошибка заключается в конфликте между добавленными ограничениями. Удалите ограничения, которые не требуются. Не использовать более одного ограничения в том же направлении и типе.

введите описание изображения здесь

Я бы рекомендовал использовать SnapKit. Это платформа Autolayout, очень удобная для использования

 import SnapKit

 var label = UILabel()

 label.snp_makeConstraints { (make) -> Void in
    make.centerX.equalTo(0)
    make.centerY.equalTo(0)
    make.width.equalTo(30)
    make.height.equalTo(30)
 }

https://github.com/SnapKit/SnapKit Надеюсь, что это полезно:)

Ответ 4

Попробуйте это, это поможет мне.

Выберите объект> "Редактор"> "Устранить проблемы с автоматической компоновкой"> "Сбросить до рекомендуемых ограничений"

enter image description here

Ответ 5

В моем случае я получал эту ошибку из-за панели навигации. Добавление нового UIViewController вызывало эту ошибку.

Я удалил старую панель навигации, а затем снова добавил ее, выбрав "Редактор" ➞ "Встроить" ➞ "Контроллер навигации".

Ответ 6

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

Выберите объект> "Редактор"> "Устранить проблемы с автоматической компоновкой"> "Сбросить до рекомендуемых ограничений"