在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 }
这将保持滚动的减速/加速效果。
- 现有的TestFlighttesting版testing人员不会收到通知,并会通知新join的人员
- 将UICollectionView单元格数据传递给不同的ViewController时EXC_BAD_INSTRUCTION
- Parse.com – 如何刷新用户的信息
- 在两个视图控制器之间同步数据以避免再次创build相同的观察者
- Xcode附加到进程不显示NSLog
- cocoa:命令/ usr / bin / ditto失败,退出代码为1
- 如何在Swift中保存从UIImagePickerController中获取的图像?
- 检测UIView是否与其他UIView相交
- iOS ARC标记为“泄漏”的以下graphics代码