首页 > 技术文章 > iOS 在storyBoard中使用scrollView的方法

humbleCP 2015-01-09 14:57 原文

引言: 最近在写一个项目的时候, 使用的storyBoard, 期间用的scrollView, 由于之前习惯于纯代码编写, 对于storyBoard一直使用的较少, 也就导致在使用scrollView的时候遇到很多的不便, 这里简单写一些个人的经验, 希望对大家有所帮助

一, 首先, 第一个问题, 我们需要在scrollView上放的东西太多, 而storyBoard中的ViewController太小, 使得整体布局很不舒服

解决办法:①.选中整个视图控制器, 设置Size →Freeform

②. 设置视图控制器的的height, 我这里为了测试, 设置的时1000, 各位可以根据实际需求, 自行设置需要的高度, 设置完之后, 试图控制器就会变成我们设置的高度, 如下图, 这时我们就可以在上面添加一个scrollView, 做我们想要的布局了. 也许你会问, 为什么不用tableView, 我用到scrollView的原因主要是我们的项目中的需求模块已经固定, 不会再添加新的内容, 用tableView对于我的项目并不节省时间, 而且界面看起来不够直观!

③.做好我们想要的布局, 如果我们想让整个storyBoard看起来并不那么别扭, 我们就需要把试图控制器设置成我们习惯的尺寸(如下图), 前提, 你需要把你之前绘制好的页面做好约束, 这样我们换回我们习惯的尺寸, 虽然storyBoard上有些视图是看不到, 但是由于约束的存在这些布局并不会乱掉.

二, scrollView的属性设置

①. 对于我的项目来说, 我的scrollView并不需要滑动后自动回去的情况, 所以需要取消勾选该项

②. 设置scrollView的contentSize, 由于本人之前没用过storyBoard的scrollView, 所以并没找到设置contentSize的位置(知道怎么设置的朋友, 可以分享下), 这也就使得每次给scrollview添加完约束后没问题,在storyboard上添加视图后, 设置完约束后就会出问题.我设置了view的左右和上的约束, 同时把高固定, 他是会报一个错误的.如图.

在一个帖子中看到说这种情况是由于使用autolayout之后, 这里需要通过约束计算出你的contensize, 但当前的约束使得系统并不足以算出contentsize, 所以就报了一个错, 帖子传送门:http://www.cocoachina.com/ios/20141118/10242.html.

以下是我对于这种情况的解决办法, 虽然你会觉得有点太扯了, 但是我反正就是这么做的, 因为我真心不知道需要怎么加这个约束, 还望懂的不惜赐教!以下是我的解决办法:

首先点击报红的地方,这里提示对于这个view的约束是有问题的, 这个问题反正我是不太懂,如下:

点击这个警告, 会有提示, 第一个是更新约束, 第三个是重新设置, 对!是根据当前重新设置约束, 就是它了, 选中,点击Fix Missplacement,如图

奇迹出现了, 红没了, 这时候你再在scrollview上添加视图的时候, 在设置约束的时候就不会报红了, 因为他已经可以自己计算出contentSize了.

虽然这种方法很不科学, 并不能从根本上解决这个问题, 因为毕竟没有找到问题的根源所在, 但奈何本人水平过次, 实在没招了, 就这么解决了, 之后各种屏幕都做过测试, 并没有出现乱掉的情况, 真机测试也是完美通过.

这里还望懂的亲们不惜赐教哈!跪谢..

三. 有可能遇到的情况

scrollView不能滑动, 或者模拟器可以滑动, 但用真机测试不能滑动, 解决办法可以参照:http://www.cnblogs.com/humbleCP/p/4213169.html

当然, 也可能遇到其他的一些情况, 比如是约束的问题、属性设置的问题等等, 具体的可以到时仔细检查下.

 

结语. 该内容是本人之前写项目中遇到后, 自己用来解决问题的办法, 希望对大家能有所帮助, 纯属本人自己摸索, 或许大家会有一些更好, 更官方的用法, 希望大家一块交流分享! 谢谢大家.

推荐阅读