У меня возникают проблемы с UIScrollView с использованием ограничений автоматической компоновки. У меня есть следующая иерархия представлений с ограничениями, установленными через IB:
- 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)
ViewA и ViewB имеют начальную высоту 200 точек, но ее можно расходуть вертикально на высоту 400 точек, щелкнув по ней. ViewA и ViewB расширяются путем обновления их ограничения по высоте (от 200 до 400). Вот соответствующий фрагмент:
if(self.contentVisible) {
heightConstraint.constant -= ContentHeight;
// + additional View internal constraints update to hide additional content
self.contentVisible = NO;
} else {
heightConstraint.constant += ContentHeight;
// + additional View internal constraints update to show additional content
self.contentVisible = YES;
}
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:.25f animations:^{
[self.view layoutIfNeeded];
}];
Моя проблема в том, что если оба представления расширены, мне нужно прокрутить, чтобы увидеть весь контент, и сейчас свиток не работает. Как мне изменить обновление прокрутки с помощью ограничений, чтобы отразить изменения высот ViewA и ViewB?
Единственное решение, о котором я могу думать, - это вручную установить высоту ContainerView после анимации, которая будет представлять собой сумму высот ViewA + ViewB + Button. Но я считаю, что есть лучшее решение?
Спасибо