如何在 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 中避免/禁用 Collection View 的垂直滚动
如何在垂直滚动其内容(集合视图)时启用 UIPageViewController 的页面滚动?