У меня есть UIScrollView, который представляет собой информационную панель в основном с соответствующей информацией для пользователя.Он имеет пейджер внизу и содержит три UIViews на данный момент.
Я использовал для установки различных представлений с CGRect в качестве рамки, устанавливая смещение по x ширины UIScrollView * номер страницы.Это работало нормально, но было трудно заставить UIScrollView исчезнуть при прокрутке внизу UITableView.
Я сейчас использую AutoLayout с ограничениями для отображения информации, которая работает нормально.Тем не менее, мой UIScrollView больше не прокручивается.Он не отвечает ни на какие жесты, которые я выполняю.Тем не менее, он реагирует на нажатия в пейджере, который показывает, что смещения и ограничения верны, я просто не могу прокрутить его.Взгляните:
Мой UIScrollView составлен так:
var dashboardView: UIScrollView = {
let dashboardView = UIScrollView()
dashboardView.translatesAutoresizingMaskIntoConstraints = false
dashboardView.backgroundColor = UIColor.clear
dashboardView.layer.masksToBounds = true
dashboardView.layer.cornerRadius = 10
dashboardView.isPagingEnabled = true
dashboardView.showsHorizontalScrollIndicator = false
dashboardView.showsVerticalScrollIndicator = false
dashboardView.alwaysBounceHorizontal = false
dashboardView.alwaysBounceVertical = false
return dashboardView
}()
Затем я устанавливаю различные виды следующим образом::
for index in 0..<3 {
let currentDash = UIView()
currentDash.backgroundColor = UIColor.lightGray
currentDash.layer.cornerRadius = 10
currentDash.layer.masksToBounds = false
currentDash.translatesAutoresizingMaskIntoConstraints = false
currentDash.isUserInteractionEnabled = false
dashboardView.addSubview(currentDash)
currentDash.topAnchor.constraint(equalTo: dashboardView.topAnchor).isActive = true
currentDash.bottomAnchor.constraint(equalTo: dashboardView.bottomAnchor).isActive = true
currentDash.leadingAnchor.constraint(equalTo: dashboardView.leadingAnchor, constant: dashboardWidth * CGFloat(index)).isActive = true
currentDash.trailingAnchor.constraint(equalTo: dashboardView.leadingAnchor, constant: (dashboardWidth * CGFloat(index)) + dashboardWidth).isActive = true
currentDash.widthAnchor.constraint(equalToConstant: dashboardWidth).isActive = true
currentDash.heightAnchor.constraint(equalToConstant: dashboardHeight).isActive = true
}
Когда я удаляю ограничения (AutoLayout) и устанавливаю его с кадрами, он работает отлично, например так:
dashFrame.origin.x = dashboardWidth * CGFloat(index)
dashFrame.size = CGSize(width: dashboardWidth, height: dashboardHeight)
let currentDash = UIView(frame: dashFrame)
Но тогда, из-за установки кадра, представлениене прокручивается вверх, как я, поэтому я хочу использовать AutoLayout.
Есть идеи или предложения относительно того, что я делаю неправильно?Мой метод ScrollViewDidScroll () просто не вызывается, потому что простая печать ничего не возвращает в моей консоли.
Я попытался установить для свойства isUserInteractionEnabled значение false в currentDash UIView, что не удалось.Я также попытался удалить все ограничения по отдельности, некоторые вместе и т. Д. - но это также не работает - мне нужны как минимум topAnchor, bottomAnchor, heightAnchor и widthAnchor.
О, и, конечно же, яустановите свойство contentSize:
dashboardView.contentSize = CGSize(width: dashboardWidth * CGFloat(dashboardPager.numberOfPages), height: dashboardHeight)
Будем весьма благодарны за любые предложения или подсказки в отношении правильного ответа.Спасибо!
РЕДАКТИРОВАТЬ: я также установил ограничения для самого UIScrollView:
dashboardView.topAnchor.constraint(equalTo: dashboardBG.topAnchor).isActive = true
dashboardView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: normalSpacing).isActive = true
dashboardView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -normalSpacing).isActive = true
dashboardView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
dashboardView.heightAnchor.constraint(equalToConstant: dashboardHeight).isActive = true
dashboardView.delegate = self