如何在UIScrollView中实现水平分页而不是垂直分页

4

我现在正在制作数字漫画应用。 当不进行缩放时,我的应用具有水平翻页功能。 但是当缩放时,图片的高度超过了屏幕高度。 因此,应用程序需要垂直分页。

但是我不需要垂直分页。 我想在缩放时仍然保持水平分页而没有垂直分页。

请教我如何实现。


可以使用一个滚动视图完成: https://dev59.com/KGPVa4cB1Zd3GeqP6ope#10480071 - LK__
3个回答

13

这很简单。就像你的朋友建议的那样,您至少需要两个UIScrollView,一个用于水平(即分页),另一个用于每个页面。关键点是(我们将它们命名为scrollHorizontalscrollVertical):

  • scrollHorizontal.frame.height必须等于scrollHorizontal.contentSize.height(否则,您将得到垂直分页)
  • scrollVertical:首先,您将为每个页面创建一个scrollVertical。框架宽度和contentSize.width应该匹配并与页面的宽度相符(在您的scrollHorizontal中)。当然,框架高度不应超过scrollHorizontal.contentSize.height

示例代码:

UIScrollView scrollHorizontal = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
scrollHorizontal.pagingEnabled = YES; scrollHorizontal.directionalLockEnabled = YES; // 不是必需的,但有帮助
// 现在让我们创建每一页
UIScrollView *scrollPage1 = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
[scrollPage1 addSubview:theContentViewForPage1];
scrollPage1.contentSize = CGSizeMake(self.view.bounds.size.width, theContentViewForPage1.bounds.size.height);
// 将页面添加到scrollHorizontal
[scrollHorizontal addSubview:scrollPage1]; [scrollPage1 release];
//...添加更多页面(记得为每个附加页面设置scrollview的frame.origin.x)
// 设置scrollHoriztonal内容大小 scrollView.contentSize = CGSizeMake(self.view.bounds.size.width*NUMBER_OF_PAGES, self.view.bounds.size.height);
// 现在将滚动视图添加到self.view;或甚至self.view = scrollHorizontal等。

我一直在尝试类似的事情,而这个答案完全解决了我的问题。非常感谢你。 - Andrew

-1

从标准API来看,技术上并不存在所谓的垂直分页,只有水平分页。上下滚动是滚动,而左右分页则略有不同。

在选择uiscrollview并在检查器窗口中编辑其属性后,您应该能够在Interface Builder中禁用垂直滚动。


-1

当用户放大缩小时,您可以动态地将pagingEnabled设置为NO,然后在缩小时将其设置回YES

查看文档了解如何检测缩放的UIScrollViewDelegate


谢谢。但这还不够,因为我需要在缩放时进行水平分页。我只想关闭垂直分页。 但我知道我不能关闭垂直分页。 所以有人告诉我建议。 他说可以使用2个scrollView关闭垂直分页。 一个是整个页面,pagingEnabled=NO; 另一个是只有一页,pagingEnabled=YES; 但我的示例无法正常工作。 请任何人帮助我。 - kyoheialfaromeo2010

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接