在UIScrollView中禁用垂直滚动
在IB有一个选项来取消滚动视图上的垂直滚动,但它似乎没有工作。
如何将scrollview设置为仅水平滚动,而不是垂直于代码而不是IB?
尝试将contentSize的高度设置为scrollView的高度。 然后垂直滚动应该被禁用,因为没有什么可以垂直滚动。
scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,scrollView.frame.size.height);
自iOS7以来:
首先:内容大小宽度必须等于您的滚动视图的宽度
第二:在你的initWithNibName:
self.automaticallyAdjustsScrollViewInsets = NO;
而已。
是的,pt2ph8的答案是正确的,
但如果由于一些奇怪的原因,你的contentSize应该比UIScrollView更高,你可以禁用垂直滚动实现UIScrollView协议方法
-(void)scrollViewDidScroll:(UIScrollView *)aScrollView;
只需在你的UIViewController中添加这个
float oldY; // here or better in .h interface - (void)scrollViewDidScroll:(UIScrollView *)aScrollView { [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, oldY)]; // or if you are sure you wanna it always on top: // [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, 0)]; }
这只是当用户滚动你的UIScrollView时调用的方法,并且这样做你强制它的内容总是一样的.y
包括以下方法
-(void)viewDidLayoutSubviews{ self.automaticallyAdjustsScrollViewInsets = NO; }
并将滚动视图的内容大小宽度设置为等于滚动视图的宽度。
我更新了内容大小以禁用垂直滚动,滚动function仍然保留。 然后我发现我也需要禁用垂直反弹,以完全禁用滚动。
也许有人也有这个问题。
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView { [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x,0)]; }
你必须已经确认到UIScrollViewDelegate
aScrollView.delegate = self;
您需要在内容大小中传递0以禁用您想要的方向。
禁用垂直滚动
scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,0);
禁用水平滚动
scrollView.contentSize = CGSizeMake(0,scrollView.contentSize.height);
只要设置y始终在上面。 需要符合UIScrollViewDelegate
func scrollViewDidScroll(scrollView: UIScrollView) { scrollView.contentOffset.y = 0.0 }
这将保持滚动的减速/加速效果。