Обновить высоту UIScrollView - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть следующие настройки в xib-файле

ScrollView (UIScrollView)
    - ContentView (UIView)
        - ImageSlider (FSPagerView)
        - ClinicName (UILabel)
        - ClinicSlogan (UILabel)
        - LineSeparatorView (UIView)
        - ClinicProfile (UITextView)
        - SectionView (Custom UIView)
        - Doctors View (UICollectionView) - Horizontal Scrolling

Ограничения устанавливаются в IB следующим образом

// ScrollView Constraints
ScrollView.Top = NavigationView.Bottom
ScrollView.Leading = SafeArea.Leading
SafeArea.Trailing = ScrollView.Trailing
SafeArea.Bottom = ScrollView.Bottom

// ContentView Constraints
ContentView.Top = SuperView.Top
ContentView.Leading = SuperView.Leading
SuperView.Trailing = ContentView.Trailing
SuperView.Bottom = ContentView.Bottom
ContentView.Height = SuperView.Height (Priority@250)
ContentView.Width = SuperView.Width

Все ограничения для подпредставлений внутри ContentView устанавливаются как связанные с SuperView (ContentView)

В viewDidLoad() Я обновляю текстовое значение ClinicSlogan и ClinicProfile и обновляю постоянную высоты.Это работает, но когда я обновляю высоту представления прокрутки, это не работает, вот код, который я вызываю ниже: viewDidLoad()

self.clinicSloganLabelHeightConstraint.constant = estimatedFrameFor(
    text: self.clinicSloganLabel.text!,
    font: self.clinicSloganLabel.font!,
    width: self.clinicSloganLabel.frame.width
).height
self.clinicProfileTextViewHeightConstraint.constant = self.clinicProfileTextView.sizeThatFits(
    CGSize(width: self.clinicProfileTextView.frame.width, height: .infinity)
).height
self.scrollView.contentSize.height = 2000

Я попытался поместить код в viewDidLayoutSubviews (), проблемаесть, я использую UICollectionView () внутри ScrollView (), который останавливает прокрутку в тот момент, когда вызывается метод viewDidLayoutSubviews.

Можете ли вы помочь в правильном направлении при обновлении высоты представления прокрутки в подклассе UIViewController?

Спасибо

1 Ответ

0 голосов
/ 27 сентября 2018

Хорошо, я решил это с помощью Autolayout в IB, что я и сделал, в последний раз я добавил ограничение «Bottom Space To Container» в Content View, и теперь весь контент автоматически корректируется.

...