Изменить размер содержимого 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()