2013-06-14 11 views
6

Ho una vista Scroll con un'etichetta a. Per centrare l'etichetta in alto al centro, applico due vincoli ad esso:Schermo nero dopo l'impostazione si traduceAutoresizingMaskIntoConstraints su NO

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[questionLabel]" 
                  options:0 
                  metrics:0 
                   views:viewsDictionary]]; 
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.questionLabel 
               attribute:NSLayoutAttributeCenterX 
               relatedBy:NSLayoutRelationEqual 
                toItem:self 
               attribute:NSLayoutAttributeCenterX 
               multiplier:1.0 
                constant:.0]]; 

Se non si imposta translatesAutoresizingMaskIntoConstraints per questionLabel su NO, correrò in un eccezione generata da Core Layout. Mi avverte che non poteva soddisfare il seguente vincolo:

(
"<NSLayoutConstraint:0x8e3baf0 V:|-(30)-[UILabel:0xa184ca0] (Names: '|':WLQuestionnaireSingleQuestionView:0xa184050)>", 
"<NSAutoresizingMaskLayoutConstraint:0x8e3efa0 h=--& v=--& UILabel:0xa184ca0.midY == + 15>" 

)

Lì vedo che Core layout cercato di soddisfare un vincolo che è stato generato automaticamente per essere compatibile con la maschera di ridimensionamento automatico. A mio avviso, la soluzione per questo dovrebbe essere quella di impostare translatorsAutoresizingMaskIntoConstraints su NO, ma sfortunatamente ciò si traduce in una schermata completamente nera, senza messaggi di debug.

Ho implementato la vista a livello di codice, nessun pennino.

+1

sto combattendo lo stesso tipo di comportamento. hai trovato una soluzione? – topwik

+0

Sto riscontrando lo stesso problema. – clearwater82

+0

Mi dispiace, era passato troppo tempo e non ho più accesso alla fonte. Credo che ci sia una soluzione alternativa come soluzione specifica per il mio problema (probabilmente evitando questo problema in primo luogo), ma non posso dire di avere la soluzione a questo specifico problema al momento. – ff10

risposta

0

Bene, vedo che questa domanda è già abbastanza vecchia. Tuttavia, voglio dare una risposta a questo dato che potrebbe essere ancora interessante per gli altri. Poiché stai usando un UIScrollView con AutoLayout, la dimensione del contenuto è determinata dai vincoli. Poiché non hai un vincolo dalla tua vista verso il basso, l'altezza non può essere impostata correttamente. Stessa cosa per la larghezza dato che non hai specificato alcuna larghezza per la tua vista. Hai appena detto al AutoLayout che dovrebbe essere posizionato al centro della vista. Il tuo problema potrebbe essere risolto usando il seguente codice (larghezza vista = 40):

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(30)-[questionLabel]|" 
                 options:0 
                 metrics:0 
                  views:viewsDictionary]]; 
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.questionLabel 
               attribute:NSLayoutAttributeCenterX 
               relatedBy:NSLayoutRelationEqual 
                toItem:self 
               attribute:NSLayoutAttributeCenterX 
               multiplier:1.0 
                constant:.0]]; 
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[questionLabel(40)]", options: 0, metrics: 0, views: viewsDictionary]]; 
Problemi correlati