Отключение горизонтальной прокрутки из 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
to false
на UITextView
.
так, когда Я бегу, он почти отлично работает.
одна проблема-это UIImageView
- примерно на 10% больше, чем фактическая ширина экрана. Таким образом, горизонтальная прокрутка включена.
я попытался добавить строки
imageView.frame = CGRect(0, 0, screenSize.width, 200)
scrlView.contentSize.width = screenSize.width
но это не имеет никакого значения. Я все еще могу прокручивать по горизонтали, и вид изображения по-прежнему занимает около 10% больше, чем фактическая ширина экрана.
примечание, Я не установил ширину экрана imageView в раскадровке, только программно.
какие идеи?
5 ответов
Как это
func scrollViewDidScroll(scrollView: UIScrollView) {
if scrollView.contentOffset.x>0 {
scrollView.contentOffset.x = 0
}
}
и, вы можете установить это свойство:
scrollImg.directionalLockEnabled = true
вышеизложенное проверяет только X в одном направлении (положительное движение). Чтобы предотвратить прокрутку влево/вправо:
func scrollViewDidScroll(scrollView: UIScrollView) {
if scrollView.contentOffset.x != 0 {
scrollView.contentOffset.x = 0
}
}
нет необходимости для направления.
func scrollViewDidScroll(_ scrollView: UIScrollView) {
scrollView.contentOffset.x = 0
}
это останавливает прокрутку scrollview в направлении переднего края.
Swift 4
Горизонтальная Блокировка Прокрутки
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.x != 0 {
scrollView.contentOffset.x = 0
}
}
вы можете изменить x на y для вертикальной прокрутки.
обязательно добавьте UIScrollViewDelegate следующим образом:
class MyViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet var scrollView: UIScrollView!
...
}
и установите делегат для ScrollView
scrollView.delegate = self
Если вы используете раскадровку и autolayout, то вы должны рассмотреть, как ScrollView работает в раскадровке с autolayout.
учитывать следующее.
добавьте одно представление в scrollView с ограничениями слева, справа, сверху, снизу, высота, ширина,
сделайте выход ширины и высоты
добавьте свои подвиды в представление, добавленное в функцией ScrollView
обновите ширину до screenSize, например: 320 для iPhone5 или 4.
self.viewWidth = SCREEN_WIDTH;
[self.view updateConstraints];