2013-08-29 2 views
9

UIWindow ha il metodo privato _autolayoutTrace che consente di trovare layout ambigui. È molto bello e conveniente e produce qualcosa del genere:Qual è il significato di Asterisk (*) nell'output di [[UIWindow keyWindow] _autolayoutTrace]]

*<UIWindow:0x13436fd0> - AMBIGUOUS LAYOUT 
| *<UIView:0xd5e0b30> 
| | *<PbJellyContentContainerView:0xd5e0ff0> 
| | | *<UIView:0x20710ee0> 
| | | | *<PbMapContainerView:0x20710c90> 
| | | | | <MKMapView:0x2070df70> 
| | | | | | <UIView:0xd1cca20> 
| | | | | | | <MKBasicMapView:0xd1cd020> 
.... 

La mia domanda non riguarda alcuna ambiguità. Si tratta dell'asterisco di fronte ad alcuni punti di vista. Qual è il suo significato?

La mia ipotesi sarebbe che contrassegna tutte le visualizzazioni che utilizzano il layout automatico. Ma come lo determina il sistema?

Aggiornamento:

Sembra che l'asterisco contraddistingue tutte le viste che o hanno almeno un vincolo impostare o che hanno una visualizzazione secondaria che ha almeno un vincolo set.

L'impostazione traslazioneAutoresizingMaskIntoConstraints su false senza impostare un vincolo non fornisce l'asterisco.

+0

Certo, ma non sono ancora soddisfatto;? ( – Klaas

+0

mi può dire come fa a ottenere questo ho cercato [[UIWindow keyWindow] _autolayoutTrace] ma non mi sta dando una tale traccia –

+0

@MehulThakkar è sufficiente inserire 'po [[UIWindow keyWindow] _autolayoutTrace]' nella console di debug. – Klaas

risposta

7

Questo è la legenda per -[UIView _autolayoutTrace] da WWDC 2015 session #219 video a 31:00

* - is laid out with auto layout 
+ - is laid out manually, but is represented in the layout engine because translatesAutoresizingMaskIntoConstraints = YES 
• - layout engine host 
0

Ho ottenuto il vostro punto, penso di sì, * è per i componenti su cui è possibile applicare l'Autolayout. Mi vuol dire che se non v'è il pulsante allora verrà mostrato come

*<UIRoundedRectButton:0x1f053a50> 
| | | <UIGroupTableViewCellBackground:0x1f053b20> 
| | | <UIImageView:0x1f0542f0> 
| | | <UIButtonLabel:0x1f053db0> 

che significa che rectButton viene messa da voi e si può applicare layout automatico su quello, mentre altri 3 sotto vengono automaticamente verranno spiegate in sé.

* sarà mostrato solo se atleast 1 componente del vostro utente ha UIAutolayout ON, se tutti i componenti è senza Autolayout, allora comprendere tutta l'UIView come singolo componente e non mostrerà * per quella