如何在 iOS 上制作垂直滚动视图?

Posted

技术标签:

【中文标题】如何在 iOS 上制作垂直滚动视图?【英文标题】:How to make a vertical scrolling view on iOS? 【发布时间】:2013-02-10 09:35:51 【问题描述】:

有人可以指导我学习如何在我的 ios 应用上实现垂直滚动视图的教程吗?

我不敢相信过去 2 天,我在垂直滚动视图上找不到一个工作示例。所有的教程都是关于水平滚动、缩放等的。

我正在寻找类似于本教程http://www.edumobile.org/iphone/iphone-programming-tutorials/scrollview-example-in-iphone-2/ 的内容,它展示了如何从 Builder 而非以编程方式制作 uiscrollView 并向其添加对象。我发现的唯一缺陷是,当试图在滚动区域中向下添加地图时,地图会出现在我放置的位置而不是在我放置的位置。也许对此也有任何想法?

有什么想法吗?

【问题讨论】:

idevzilla.com/2010/09/16/uiscrollview-a-really-simple-tutorial 如果您可以制作水平滚动视图,那么您将自动拥有一个也可以垂直滚动的视图。只需正确操作contentSize 属性即可。 您应该能够将 srcollView.contentSize 设置为比您的滚动视图框架更大的宽度,这将使其水平滚动。在您的 xib 中单击滚动视图并设置启用滚动和水平弹跳。 是的,我已经看过本教程并完成了,对理解如何制作垂直视图毫无帮助。我更喜欢界面构建器的东西,而不是太多的编程 【参考方案1】:

很简单,和水平滚动视图一样。 在视图层次结构中添加滚动视图,

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:scrollView];

现在要使滚动视图可滚动,请将其滚动视图内容大小设置为大于其边界。

[scrollView setContentSize:CGSizeMake(scrollView.bounds.size.width, scrollView.bounds.size.height*3)];

现在它可以滚动三倍于scrollView的高度。

【讨论】:

好的。但是我如何将按钮映射 textview 等放置到我的视图中?我不是指程序化。我的意思是来自视图构建器。 在故事板或 xib 中。您首先将地图视图和文本视图拖到滚动视图上。在滚动视图中设置单个项目的框架。但是要设置 contentsize,您需要在代码中进行。只需查看最大高度和宽度并在 viewdidload 中设置 我明白你想说什么,但我真的不会编码。这就是为什么,我要求一个教程。非常感谢您尝试提供帮助:) 那真是太棒了!【参考方案2】:

我已经为这个简单的问题苦苦挣扎了一整天。更复杂的方法很可能有好处,但取消选中自动布局解决了我的问题。

为了快速解决问题,我相信这是最好的方法,并且会为您省去很大的麻烦。

【讨论】:

【参考方案3】:

所以你想在 xib 中创建一个滚动视图。

    为 nib 文件添加滚动视图

    将其大小设置为您想要的任何值

    添加您的控件(按钮、标签..)

    将其添加为主视图的子视图

    最后创建一个滚动视图的属性并在viewDidLoad中设置滚动视图的内容大小

     self.scrollView.contentSize =CGSizeMake(320, 700);
    

【讨论】:

我完全按照您的指示进行操作。正如你所说,我确实创建了一个滚动视图,我确实将它添加为子视图,我确实在我的滚动视图中添加了按钮,我创建了一个@property(强,非原子)IBOutlet UIScrollView *scrollView;并将其连接到我的滚动视图。但是视图不可滚动:(。我在这里遗漏了什么吗?我是否需要启用某些属性才能使其可滚动或smth? 你在viewDidLoad中设置了内容大小self.scrollView.contentSize =CGSizeMake(320, 600); Dude 给出一个高于 600 的值:P self.scrollView.contentSize =CGSizeMake(320, 700) 也可以通过拖动滚动视图在 nib 中正确调整视图 简直太棒了!!非常感谢你!这正是我想要的。如此简单。难以置信,我在任何地方都找不到它,而且这里没有人建议这个简单的解决方案。非常感谢! 本不想做新的回答,不过你也可以直接把View本身做成滚动视图,只需要在storyboard editor中,在Identity Inspector中,为Custom Class选择主View您可以将类从默认的 UIView 更改为 UIScrollView。然后按照此答案中的相同步骤进行操作。这对我有用。【参考方案4】:

只需更改滚动视图的内容大小。假设您正在创建具有以下框架的 UIScrollView

scl=[[UIScrollView  alloc]initWithFrame:CGRectMake(0, 0, 620, 172)];

现在调用滚动视图的内容大小属性,如下所示。

[scl setContentSize:CGSizeMake(700, 172)];

现在在视图/视图控制器等上添加滚动视图并检查它。

【讨论】:

以上是关于如何在 iOS 上制作垂直滚动视图?的主要内容,如果未能解决你的问题,请参考以下文章

ios上嵌套滚动视图的可用性问题

如何在 iOS 中制作可滚动视图?

如何在 iOS 中避免/禁用 Collection View 的垂直滚动

如何在垂直滚动其内容(集合视图)时启用 UIPageViewController 的页面滚动?

如何在 iOS 中为表格视图和滚动视图设置偏移量,以便两者一起滚动

UIScrollview在垂直和水平ios中滚动