从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,并为UITextView
将scrollingEnabled
设置为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中使用自动布局。
考虑以下。
-
在scrollView上添加一个视图,左,右,上,下,高,宽约束
-
制作宽度和高度的出口
-
将子视图添加到您在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