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

问题描述 投票:0回答:3

我现在正在制作数字漫画。 我的应用程序在不缩放时具有水平分页。 但是当缩放时,图片的高度超过了屏幕的高度。 所以应用程序有垂直分页。

但我不需要垂直分页。 我想在缩放过程中进行水平分页而不进行垂直分页。

请教我。

iphone pagination uiscrollview
3个回答
13
投票

这真的很简单。正如您的朋友所建议的,您至少需要两个

UIScrollView
。您将需要一个
UIScrollView
来进行水平(即分页),并且您将需要一个
UIScrollView
来表示 each 页。关键点是(让我们将它们命名为
scrollHorizontal
scrollVertical
):

  • scrollHorizontal.frame.height
    必须等于
    scrollHorizontal.contentSize.height
    (否则,你最终会得到垂直分页)
  • scrollVertical
    :首先,每个页面都会有一个。框架宽度和
    contentSize.width
    应匹配且有意义。页面的宽度(在您的
    scrollHorizontal
    中)。当然,您应该让框架高度不超过
    scrollHorizontal.contentSize.height

示例代码:


UIScrollView 滚动水平 = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

滚动水平.pagingEnabled = YES;
滚动水平.directionLockEnabled = 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发布];

//...添加更多页面(记住为每个附加页面相应地设置滚动视图的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 等。


-1
投票

从技术上来说,不存在垂直分页这样的东西,对于标准 API 目前只有水平分页。 上/下是滚动,左/右翻页有点不同。

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


-1
投票

您可以在用户放大时将

pagingEnabled
动态设置为
NO
,然后在缩小时将其设置回
YES

查看 UIScrollViewDelegate

docs
以了解如何检测缩放。

© www.soinside.com 2019 - 2024. All rights reserved.