Ho problemi con UIScrollView utilizzando i vincoli di layout automatico. Ho la seguente vista gerarchia, con vincoli imposti attraverso IB:Layout automatico UIScrollView con sottoview con altezze dinamiche
- ScrollView (leading, trailing, bottom and top spaces to superview)
-- ContainerView (leading, trailing, bottom and top spaces to superview)
--- ViewA (full width, top of superview)
--- ViewB (full width, below ViewA)
--- Button (full width, below ViewB)
Il viewA e viewB hanno altezze iniziali di 200 punti, ma può essere speso in verticale per un'altezza di 400 punti cliccando su di esso. ViewA e ViewB sono espansi aggiornando il loro vincolo di altezza (da 200 a 400). Ecco il corrispondente frammento:
if(self.contentVisible) {
heightConstraint.constant -= ContentHeight;
// + additional View's internal constraints update to hide additional content
self.contentVisible = NO;
} else {
heightConstraint.constant += ContentHeight;
// + additional View's internal constraints update to show additional content
self.contentVisible = YES;
}
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:.25f animations:^{
[self.view layoutIfNeeded];
}];
Il mio problema è che se entrambe le viste sono espansi, ho bisogno di essere in grado di scorrere per vedere l'intero contenuto, e in questo momento il rotolo non sta funzionando. Come posso aggiornare la vista di scorrimento usando i vincoli per riflettere i cambiamenti delle altezze ViewA e ViewB?
L'unica soluzione che riesco a pensare finora è impostare manualmente l'altezza di ContainerView dopo l'animazione, che sarà la somma delle altezze del pulsante ViewA + ViewB +. Ma credo che ci sia una soluzione migliore?
Grazie
http://stackoverflow.com/questions/13499467/uiscrollview-doesnt-use-autolayout-constraints è stato anche molto utile –