Отключение горизонтальной прокрутки из UIScrollView Swift

Просмотр прокрутки

У меня есть UIScrollView с ограничениями left: 0, top: 0, right: 0, bottom: 0

Внутренний просмотр прокрутки

В верхней части этого UIScrollView находится UIImageView с ограничениями left: 0, top: 0, right: 0, height: 200

Под этим я имею UITextView с ограничениями left: 0, top: 0, right: 0, bottom: 0

Это означает, что UITextView изменит размер относительно его содержимого, и я установил scrollingEnabled в false для UITextView.

Итак, когда я бегу, он почти отлично работает.

Одна проблема: UIImageView занимает примерно на 10% больше фактической ширины экрана. Следовательно, включена горизонтальная прокрутка.

Я попытался добавить строки

imageView.frame = CGRect(0, 0, screenSize.width, 200)
scrlView.contentSize.width = screenSize.width

но это не имеет значения. Я все еще могу прокручивать по горизонтали, а Image View по-прежнему занимает около 10% больше фактической ширины экрана.

Заметьте, я не установил ширину экрана imageView в раскадровке, только программно.

Любые идеи?

Ответ 1

Как это,

func scrollViewDidScroll(scrollView: UIScrollView) {
    if scrollView.contentOffset.x>0 {
        scrollView.contentOffset.x = 0
    }
}

И вы можете установить это свойство:

scrollImg.directionalLockEnabled = true

Ответ 2

Вышеупомянутые проверки только для X в одном направлении (положительное движение). Чтобы предотвратить прокрутку влево/вправо:

func scrollViewDidScroll(scrollView: UIScrollView) {
    if scrollView.contentOffset.x != 0 {
        scrollView.contentOffset.x = 0
    }
}

Не требуется блокировка направления.

Ответ 3

Если вы используете раскадровку и автозапуск, вам следует подумать о том, как ScrollView работает в раскадровке с автозапуском.

Рассмотрим следующее.

  • Добавьте один вид на свой scrollView со сдерживаниями слева, справа, сверху, снизу, высоте, ширине,

  • Сделайте выход ширины и высоты

  • Добавьте свои подвид в представление, которое вы добавили в scrollView

обновите ширину экрана, например: 320 для iPhone5 или 4.

self.viewWidth = SCREEN_WIDTH;
[self.view updateConstraints];