2013-07-23 11 views
9

Faktycznie zintegrowana aplikacja aparatu wykorzystująca Xib, w której umieściłem uiview w widoku, po czym umieszczam obraz, ponownie oglądam obraz, aby przyciąć. następnie uruchom projekt Mam ten błąd.Nie można jednocześnie zaspokoić ograniczeń

2013-07-23 12: 45: 49.936 Camera_App1 [30668: 907] Nie można jednocześnie spełnić ograniczeń. Prawdopodobnie przynajmniej jedno z ograniczeń na poniższej liście to takie, którego nie chcesz. Spróbuj tego: (1) spójrz na każde ograniczenie i spróbuj ustalić, czego się nie spodziewasz; (2) znajdź kod dodający niechciane ograniczenia lub ograniczenia i napraw je. (Uwaga: Jeśli widzisz NSAutoresizingMaskLayoutConstraints, że nie rozumieją, należy zapoznać się z dokumentacją dla translatesAutoresizingMaskIntoConstraints własności UIView)

(
    "<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. 
+3

Chcę downvote komentarze. Na serio. –

+1

@ MatthiasBauch Oznacz to jako nie konstruktywne. – JustSid

+1

możliwy duplikat [Uzyskiwanie dziwnego błędu dotyczącego ograniczeń w Xcode] (http://stackoverflow.com/questions/11664115/getting-weird-error-talking- about-constraints-in-xcode) –

Odpowiedz

20

Błąd jest to, co mówi, i daje bardzo wyraźne instrukcje dla ciebie rozpocznij debugowanie. Istnieją dwa ograniczenia, które powodują konflikt. Każda z instrukcji nakazuje środowisku wykonawczemu Auto Layout wykonanie czegoś, co jest sprzeczne z drugim.

Jeśli programujesz programowo i dodając widoki, to są szanse, że atrybuty automatycznej zmiany rozmiaru zostały automatycznie przetłumaczone na więzy Auto Layout.

Więc pierwszą rzeczą, aby spróbować to, ze swoimi programowo utworzonych widoków, wyłącz to poprzez ustawienie:

myProgrammaticView.translatesAutoresizingMaskIntoConstraints = NO; 
+0

Jeśli chcę użyć jednego konkretnego widoku bez żadnych ograniczeń, jak mogę uniknąć ostrzeżenia ... – Leena

+0

jeśli widok nie ma ograniczeń, to nie będzie ostrzeżeń. –

+0

Chcę ograniczeń wraz z chcę używać automatycznego maskowania bez ostrzeżenia. – Leena

4

miałem ten sam problem, po wielu godzinach poszukiwań, okazało się problemem było, bo w hotspot-Call lub status bar został przełączony (hotspot jest włączony, w rozmowie telefonicznej), aby rozwiązać problem, w appdelegate i dodaje:

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

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

Dzięki! To rozwiązuje również mój problem.Jednak gdy spróbuję innego przypadku, zostaw pasek stanu połączenia (szerszy zielony pasek), a następnie uruchom aplikację, spróbuj ją przełączyć, ponownie widzę błąd. Czy widzisz to samo? –

0

znam ten wątek jest bardzo stary, ale to jest moje doświadczenie i Rozwiązanie.

Wybierz widok (UILabel, UIImage etc) Edytor> Pin> (Wybierz ...) do Superview Editor> Rozwiąż Auto Problemy Układ> Dodaj brak Ograniczenia

Błąd ten polega na konflikcie pomiędzy ograniczeniami, które zostały dodane. Usuń ograniczenia, które nie są wymagane. Nie używać więcej niż jednego ograniczenia w tym samym kierunku i rodzaju.

enter image description here

Polecam skorzystanie SnapKit. Jest to framework autoLayout, bardzo wygodny w użyciu

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 nadzieję, że to pomocny :)

Powiązane problemy