从UIScrollView Swift禁用水平滚动

滚动视图

我有一个UIScrollView, left: 0, top: 0, right: 0, bottom: 0有约束left: 0, top: 0, right: 0, bottom: 0

内部滚动视图

在这个UIScrollView的顶部是一个left: 0, top: 0, right: 0, height: 200有约束的UIImageView left: 0, top: 0, right: 0, height: 200

在这下面我有一个left: 0, top: 0, right: 0, bottom: 0有约束的UITextView left: 0, top: 0, right: 0, bottom: 0

这意味着UITextView将根据其内容resize,并为UITextViewscrollingEnabled设置为false

所以,当我跑步时,它几乎完美无缺。

一个问题是UIImageView比实际屏幕宽度多出约10%。 因此,启用水平滚动。

我试过添加线条

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

但这没什么区别。 我仍然可以水平滚动,图像视图仍然占用实际屏幕宽度的10%左右。

注意,我没有在storyboard中设置imageView屏幕宽度,只是以编程方式。

有任何想法吗?

喜欢这个,

 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 } 

这会阻止滚动视图向前滚动。

如果您正在使用storyboard和autolayout,那么您应该考虑ScrollView如何在Storyboard中使用自动布局。

考虑以下。

  1. 在scrollView上添加一个视图,左,右,上,下,高,宽约束

  2. 制作宽度和高度的出口

  3. 将子视图添加到您在scrollView中添加的视图

将宽度更新为screenSize,例如:3205 for iPhone5或4。

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

斯威夫特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