Изменить размер содержимого UIScrollView

У меня есть ViewController с UIScrollView, некоторые UIImages и UIButton. В раскадровке я установил размер UIScrollView: ширина: 320, высота: 570

Я хочу изменить размер содержимого моего UIScrollView при загрузке ViewController.

Я добавил сторону в viewDidLoad:

        scrlMain.contentSize = CGSize(width: 320,height: 790)

А также я добавил код в viewDidLayoutSubviews:

        self.scrlMain.translatesAutoresizingMaskIntoConstraints = true

Но мой UIScrollView по-прежнему имеет последний размер = 570. Я не могу использовать viewDidAppear, потому что, когда я нажимаю кнопку, он нужен для изменения цвета. Когда это изменило цвет, мой UIScrollView перемещается вверх.

Что я сделал не так?

Весь код:

    override func viewDidLoad() {
    super.viewDidLoad()
    scrlMain.delegate = self
    scrlMain.contentSize = CGSizeMake(320, 790)
    }
override func viewDidLayoutSubviews() {
    self.scrlMain.translatesAutoresizingMaskIntoConstraints = true
    self.scrlMain.contentSize = CGSize(width: self.scrlMain.frame.width, height: 60.0 + 5 * (self.scrlMain.frame.width / 16.0 * 5.0));
}

5 ответов

Решение

В этой функции произошла ошибка:

override func viewDidLayoutSubviews() {
self.scrlMain.translatesAutoresizingMaskIntoConstraints = true
self.scrlMain.contentSize = CGSize(width: self.scrlMain.frame.width, height: 60.0 + 5 * (self.scrlMain.frame.width / 16.0 * 5.0));
}

Я удаляю этот код:

self.scrlMain.contentSize = CGSize(width: self.scrlMain.frame.width, height: 60.0 + 5 * (self.scrlMain.frame.width / 16.0 * 5.0));

И все было правильно

Эй @ Дим, ты можешь попробовать это

yourScrollView.contentSize = CGSizeMake(320, 568)

И вы можете изменить размер 568 на любой другой.

Попробуй это:

yourScrollView.userInteractionEnabled = YES

и, пожалуйста, сохраняйте разницу между размером экрана и размером содержимого прокрутки... чтобы он был виден правильно

предположим, что ваш ScrollViewSize больше, чем ваш ScreenSize

override func viewDidLayoutSubviews() {

    DispatchQueue.main.async {
    self.scrollview.translatesAutoresizingMaskIntoConstraints = true
    self.scrollview.contentSize = CGSize(width:0, height:self.scrollview.frame.height*2) // whatever hight you want
    }
}

Также возможно изменить размер содержимого на странице без повторного запуска ViewDidLoad.

Просто добавь

      scrollView.layoutIfNeeded()

после того, как вы установите новый contentSize

Пример изменения размера содержимого ( viewImages ) в UIscrollView( scrollViewImages)

      viewImages.frame.size = CGSize(width: width, height: 128)
viewImages.translatesAutoresizingMaskIntoConstraints = true
viewImages.setNeedsLayout()
scrollViewImages.setNeedsLayout()
scrollViewImages.layoutIfNeeded()
Другие вопросы по тегам