2013-06-01 11 views
5

Il mio problema è correlato all'uso di layout automatico (il famoso);)Autolayout come supportare la sostituzione di una sottoview?

Vorrei gestire 2 situazioni di subviews nel controller stessa vista modo che io possa passare da una situazione all'altra (e reciprocamente).

Permettetemi di presentarvi il problema con il seguente schema:

Diagram of the same view controller in the 2 situations

Il problema è che non riesco a capire come esprimere i vincoli layout automatico in Interface Builder in modo che possa facilmente passare da una situazione ad un altro. Per essere più precisi, le sottoview VIEW_B1 e VIEW_B2 sono visori secondari differenti con altezza diversa.

Ho già provato a nascondere la vista secondaria che non voglio vedere (VIEW_B1 o VIEW_B2) ma in questo caso VIEW_C rimarrà nella sua posizione Y. Quello che mi piacerebbe che fosse VIEW_C incollare a VIEW_B * (quello che non è nascosto).

risposta

2

Nascondere la vista non rimuove i vincoli. Devi rimuovere la vista B1 dalla sua superview, inserire B2 e quindi aggiungere vincoli che fissano B2 alle viste sopra e sotto di essa.

Se non si desidera rimuovere completamente la vista, è possibile memorizzare i vincoli che collegano ciascuna vista B * alle viste sopra e sotto nelle proprietà, quindi quando si disattivano le viste, rimuovere e aggiungere l'appropriato vincoli alla superview.