Я также нашел ответ Левиафана, чтобы работать лучше всего. Тем не менее, он рассчитывал странную высоту. При циклическом просмотре подпредставлений, если для прокрутки установлено отображение индикаторов прокрутки, они будут в массиве подпредставлений. В этом случае решение состоит в том, чтобы временно отключить индикаторы прокрутки перед циклом, а затем восстановить их прежнюю настройку видимости.
-(void)adjustContentSizeToFit
- это открытый метод пользовательского подкласса UIScrollView.
-(void)awakeFromNib {
dispatch_async(dispatch_get_main_queue(), ^{
[self adjustContentSizeToFit];
});
}
-(void)adjustContentSizeToFit {
BOOL showsVerticalScrollIndicator = self.showsVerticalScrollIndicator;
BOOL showsHorizontalScrollIndicator = self.showsHorizontalScrollIndicator;
self.showsVerticalScrollIndicator = NO;
self.showsHorizontalScrollIndicator = NO;
CGRect contentRect = CGRectZero;
for (UIView *view in self.subviews) {
contentRect = CGRectUnion(contentRect, view.frame);
}
self.contentSize = contentRect.size;
self.showsVerticalScrollIndicator = showsVerticalScrollIndicator;
self.showsHorizontalScrollIndicator = showsHorizontalScrollIndicator;
}