2013-07-23 15 views
9

Applicazione fotocamera realmente integrata utilizzando xib, in cui ho inserito uiview su una vista, dopodiché ho inserito la vista immagine, di nuovo vista su imageview per il ritaglio. quindi eseguire il progetto ho ricevuto questo errore.Impossibile soddisfare simultaneamente i vincoli

2013-07-23 12: 45: 49,936 Camera_App1 [30668: 907] Impossibile soddisfare contemporaneamente i vincoli. Probabilmente almeno uno dei vincoli nella seguente lista è uno che non vuoi. Prova questo: (1) guarda ogni vincolo e cerca di capire quale non ti aspetti; (2) trova il codice che ha aggiunto il vincolo o i vincoli indesiderati e risolvilo. (Nota: Se si sta vedendo NSAutoresizingMaskLayoutConstraints che non si capisce, fare riferimento alla documentazione per le translatesAutoresizingMaskIntoConstraints proprietà 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

voglio downvote commenti. Davvero. –

+1

@MatthiasBauch Contrassegnarlo come non costruttivo. – JustSid

+1

possibile duplicato di [Ottenere uno strano errore parlando di vincoli in Xcode] (http://stackoverflow.com/questions/11664115/getting-weird-error-talking-about-constraints-in-xcode) –

risposta

20

L'errore è quello che dice, e fornisce istruzioni abbastanza chiare per voi di iniziare il debug. Ci sono due limiti in conflitto. Ognuno istruisce il runtime del layout automatico per fare qualcosa che contraddice l'altro.

Se si stanno creando e aggiungendo viste a livello di programmazione, è probabile che gli attributi Ridimensionamento automatico siano stati automaticamente convertiti in vincoli di layout automatico.

Quindi, la prima cosa da provare è, con le vostre opinioni a livello di codice create, disattivare questa impostando:

myProgrammaticView.translatesAutoresizingMaskIntoConstraints = NO; 
+0

Se voglio usare una vista particolare senza alcuni vincoli, come posso evitare warnings ... – Leena

+0

se la vista non ha vincoli, non ci saranno avvisi –

+0

Voglio vincoli insieme voglio usare la maschera di autoresizing senza avvisi. – Leena

4

Ho avuto lo stesso problema, dopo ore di ricerca, si è scoperto che il problema era perché in -call o lo stato hotspot bar era attivata, (hotspot è su, in una telefonata), per risolvere il problema, in AppDelegate ho aggiunto:

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

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

Grazie! Questo risolve anche il mio problema.Tuttavia, quando provo un altro caso, lasciare la barra In-Call Status su (barra verde più ampia), quindi avviare l'app, provare a commutarla, vedo nuovamente l'errore. Vedi lo stesso? –

0

so che questo thread è molto vecchio, ma questa è la mia esperienza e Soluzione.

Select vista (UILabel, UIImage ecc) Editor> PIN> (Select ...) per Superview Editor> Risoluzione automatica problemi di layout> Aggiungi vincoli mancanti

Questo errore è quello di conflitto tra i vincoli che sono stati aggiunti. Rimuovi i vincoli che non sono richiesti. Non usare più di un vincolo nella stessa direzione e tipo.

enter image description here

mi consiglia di utilizzare SnapKit. Si tratta di un quadro Autolayout, molto comodo da usare

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 Spero che questo è utile :)

Problemi correlati