2015-08-25 4 views
12

Scroll ViewОтключение Горизонтальная прокрутка от UIScrollView Swift

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

Внутри Scroll View

В верхней части этого 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% больше, чем фактическая ширина экрана.

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

Любые идеи?

+0

ли это 'scrlView.contentSize.width = 0;' – iphonic

+0

Посмотреть эту ссылку http://stackoverflow.com/questions/27326924/swift-uiscrollview-correct-implementation-for-only-vertical-scrolling –

+0

я встретил тот же много раз в прошлом. Я решил проблему с использованием contentview в scrollView. Я советую использовать uiview как contentview в scrollView. Основная точка - ширина содержимогоView должна быть равна ширине scrollView. Все ваши текстовые изображения imageview и т. Д. Должны находиться в режиме просмотра содержимого. – muhammedkasva

ответ

12

Подобно этому,

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

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

scrollImg.directionalLockEnabled = true 
+0

отлично, он работал с первой функцией. что делает 'directionLockEnabled'? –

+0

На самом деле прокрутка остановилась, но изображение еще слишком велико. –

+0

Я исправил ее с ограничениями, неважно –

1

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

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

  1. Добавить единое представление о вашей Scrollview с ограничениями слева, справа, сверху, снизу, высота, ширина,

  2. сделать выход ширины и высоты

  3. Добавьте подвиды к виду вы добавили в Scrollview

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

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

Вышеуказанные проверяет только Х в одном направлении (положительное движение).Для предотвращения прокрутки влево/вправо:

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

Не нужно иметь направленную блокировку.

+1

Также работает в вертикальном режиме, только меняя '.x' на' .y' –

+0

Лучший ответ, чем Loxx's – FredFlinstone

+0

Отличный ответ! – user7097242

Смежные вопросы