Swift 5 UIScrollView добавление фонового изображения - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь добавить фоновое изображение, которое будет прокручиваться с моим вертикальным scrollView. Перед добавлением фонового изображения мой scrollView прокручивается только по вертикали, но после установки фонового изображения scrollView теперь может прокручивать по горизонтали и вертикали, как если бы ширина фонового изображения превышала ширину прокрутки

let scrollView: UIScrollView = {
    let view = UIScrollView()
    view.translatesAutoresizingMaskIntoConstraints = false
    view.isDirectionalLockEnabled = true
    view.isScrollEnabled = true
    return view
}()

let backgroundIV: UIImageView = {
    let imageView = UIImageView(image: UIImage(named: "background"))
    imageView.contentMode = UIView.ContentMode.scaleToFill
    return imageView
}()

Функция Я использую для настройки моего вида

private func setupContent() {

    scrollViewHeight = viewHeight * 2

    [scrollView].forEach { view.addSubview($0) }
    scrollView.anchor(top: view.topAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor)
    scrollView.contentSize = CGSize(width: 0, height: scrollViewHeight)

    [backgroundIV].forEach { scrollView.addSubview($0) }
    backgroundIV.anchor(top: scrollView.topAnchor, leading: scrollView.leadingAnchor, bottom: scrollView.bottomAnchor, trailing: scrollView.trailingAnchor, size: .init(width: 0, height: scrollViewHeight))

}

Так как мне установить фоновое изображение, чтобы мое прокручиваемое изображение не прокручивалось горизонтально ??

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Вы должны установить правильные размеры контента для вашего scrollView или настроить контент.

Установите ширину вашего imageView равной ширине вашего scrollView. Это позволит избежать горизонтальной прокрутки scrollView. Пожалуйста, найдите ниже код для установки widthAchor.

imageView.widthAnchor.constraintEqualToAnchor(scrollView.widthAnchor).active = true
0 голосов
/ 23 апреля 2020

После применения ответа Викрама Парими и некоторых дальнейших раскопок, два вида прокрутки сделали горизонтальный вид моего прокрутки

  • Характеристики ограничений между видом прокрутки и видом говорят нам: выравнивание и размер больше не противоречит, оба из которых должны быть определены, чтобы устранить двусмысленность. Что я узнал из https://medium.com/@tingyishih / ios -scrollview-constraints-8d8140d329a0

  • Другой фактор заключается в том, что ошибка существует только в iphone 11 Pro Max Simulator, а не iphone 8 симулятор, который можно решить с помощью safeAreaLayoutGuide

 if #available(iOS 11.0, *) {
      imageView.widthAnchor.constraintEqualToAnchor(scrollView.safeAreaLayoutGuide.widthAnchor).active = true
 } else {
      imageView.widthAnchor.constraintEqualToAnchor(scrollView.widthAnchor).active = true
 }

...