Моя иерархия: scrollView
> UiView
(назвал его contentView)> imageView
.
У меня sv прикреплен к l, r, t, b родительского представления, представление содержимогоприкрепленный к t, b sv и ширине родительского представления, и imageView
, прикрепленный к l, r, t, b в contentView.
При использовании iPad изображение занимает весь экран.Когда я провожу вверх и вниз, прокрутка scrollView без проблем.При пролистывании влево или вправо происходит сбой:
* Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «* - [__ NSPlaceholderDictionary initWithObjects: forKeys: count:]: попытка вставить нулевой объект из объектов [0] '
Почему я могу без проблем прокручивать вверх и вниз, но при попытке прокрутки влево или вправо происходит сбой?
MyVC: UIViewController, UIScrollViewDelegate {
lazy var scrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.translatesAutoresizingMaskIntoConstraints = false
scrollView.backgroundColor = .white
return scrollView
}()
lazy var containerView: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
lazy var imageView: UIImageView = {
let imageView = UIImageView()
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.contentMode = .scaleAspectFill
return imageView
}()
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
scrollView.minimumZoomScale = 1.0
scrollView.maximumZoomScale = 6.0
setAnchors()
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
func setAnchors() {
view.addSubview(scrollView)
scrollView.addSubview(containerView)
containerView.addSubview(imageView)
scrollView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
scrollView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
scrollView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
scrollView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
containerView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
containerView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
containerView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
imageView.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
imageView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor).isActive = true
imageView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor).isActive = true
imageView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
scrollView.contentSize = CGSize(width: scrollView.contentSize.width, height: view.frame.height)
}
}
Обновление:
Я пытался использовать эти ограничения, и он все еще падал:
containerView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
containerView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true