在xcode 4.2的scrollview里面devise故事板

我有一个垂直滚动uiscrollview – 想象一个“关于这个应用程序”页面的标签栏应用程序,它有点点,需要一个滚动视图。 它只包含几个图像,一个video和一些文本(只有video已经被编码 – 其余的被放置在GUI中)。 在故事板(界面生成器?)Xcode 4.2中,一切都设置好了,并且工作正常,但是视图只有在屏幕上看到的那么大,是不是可以在故事板上手动排列最初在屏幕外 – 你需要滚动到? 到目前为止,我发现的唯一方法是在可见视图上devise它们,然后使用箭头键导航它们。

我感到你的痛苦。 我发现的唯一方法是手动平移大小检查器中的滚动视图,以显示您想要直观编辑的部分视图。

使用UIView来包含元素,使它们相对于这个视图定位。 将视图作为子视图添加到0,0的滚动视图中。

  1. 平移:用Y坐标说-200,然后编辑内容。
  2. 把更多的内容放在隐藏的部分,再次泛起来揭示新的房地产
  3. 完成后,恢复ScrollView的高度和X,Y位置的值。

确保滚动视图框架矩形小于包含的视图。

在故事板中selectviewController,然后在属性检查器中将'size'更改为'freeform'。 然后将视图/滚动视图的“高度”更改为您需要的大小。 在运行应用程序时,struts和spring的默认设置应该正确地重新调整视图的大小,但是您应该仔细检查。

新:3/26/2013

我偶然发现了我认为在故事板中直接处理UIScrollView的更简单的方法。

  1. 没有代码需要,只是故事板设置。 这可能是iOS6.1 / Xcode 4.6中的新增function
  2. 不需要禁用约束(即取消选中“文件检查器”中的“使用自动布局”作为故事板文件)
  3. 无需添加UIScrollView * scrollView; 在.h
  4. 不需要添加self.scrollView.contentSize = …覆盖viewWillAppear或viewDidLoad

这是我做的(用**标出的重要部分):(见代码 )

  1. 创build一个故事板启用的新项目
  2. 放在UIScrollView中,在视图控制器的身份检查器中设置类
  3. 在属性Inspector中,将模拟度量下的大小更改为Freeform **
  4. select滚动查看; 在属性检查器中,打开“滚动启用”和“背景”为“白色”(你会找出原因 – 如果你不这样做)
  5. 在“大小检查器”下(select滚动视图),将高度更改为900,例如**
  6. 添加button,一个在顶部,一个在底部
  7. 为两个button添加buttonTouchUpInside的默认处理程序,并简单地logging发件人。

查看代码select视图控制器并滚动视图并检查检查器。

只需将视图控制器的“模拟大小”更改为自由forms,并设置比通常大小更大的高度,就可以看到所有需要编辑的sockets。

在iOS 6.0上,您可以在滚动视图中拖动容器视图。 这将自动为当前场景之外的内容创build一个新的视图。 然后,您可以调整此视图的大小以适应您的内容。

我相信你仍然需要在运行时设置ScrollView的内容高度,但是至less你可以devise你的内容视图,而不必在IB上下滚动。

只要取消选中任何您想要resize的视图中的“Autoresize子视图”,它应该保留所有对象的大小。

我一直在为此苦苦挣扎,而且我尝试过的每件事都失败了。

具体来说,我想实现的是一个自由大小的模式对话框,其中一个可滚动视图包含另一个视图的容器。 我有很多不同的结果,包括偶尔有它正常工作。 大多数情况下,我看它完全正确,但没有滚动。

在最后下载的Dickey Singh的代码,完美的工作,但没有什么特别的。 (极好的清洁解决schemeBTW)。 所以,我添加了一个容器视图,就像我在代码中一样,它打破了!

经过一番试验,我找出了发生的一切。 只要忍受我。

1)使用自动布局,滚动视图的大小似乎决定了滚动界限将是什么。 在“USer Defined Runtime Attributes”中设置“contentSize”似乎对此没有影响,在“viewWillDisplay”或“viewDidLoad”中也没有设置“contentSize”或“bounds”。 因此,如果滚动视图的初始大小是800×800,那将是所有可以显示的空间。 出于这个原因,当我想要一个可滚动的区域时,我创build一个容器视图,然后将滚动视图放入内容中。

2)如果没有自动布局,在“用户定义的运行时属性”中设置“contentSize”就像在“viewDidLoad”中以编程方式设置一样。 我更喜欢使用“用户定义的运行时属性”,因为它与布局保持一致。 这个解决scheme允许您更灵活地使用滚动视图,因为在devise时它可以是任意大小。

3)无论自动布局如何,如果滚动区域内的任何视图与水平或垂直框架边界完全匹配,则滚动视图停止用作滚动视图。 这适用于我自己的代码和Dickey Singh的代码,我已经尝试过所有可能的configuration。

我不知道是什么原因(3),但显然是一个错误。

我希望这能帮助那些正在努力使用滚动视图的人们。 我想有些人没有任何问题地使用它们,有些人(比如我)已经注意到了他们的问题。

这里是我的解决scheme来devise一个ScrollView,其内容大于Screenboard中的屏幕(除了单行代码:-):

https://stackoverflow.com/a/19476991/1869369

我目前正在为iOS 7开发一个应用程序,而且我完全按照@Dickey Singh的回答,但是一开始它就不工作。 在检查故事板后,我发现我们还需要为保存scrollView的视图控制器添加自动布局约束。 看起来这样的自动布局约束会在Xcode 5之前自动添加,但现在我们需要自己完成。 添加约束的方法:首先在故事板中select视图控制器; 在顶部菜单中input“编辑器”; select“解决自动布局问题”; select“在容器中添加缺less约束”。 完成:-)