使用故事板在xcode 4.2中设计scrollview

时间:2012-01-10 20:22:33

标签: ios uiscrollview storyboard

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

9 个答案:

答案 0 :(得分:51)

在storyboard中选择viewController,然后在Attributes检查器中将'size'更改为'freeform'。然后将视图/滚动视图的“高度”更改为您需要的大小。 struts和spring的默认设置应该在应用程序运行时正确调整视图大小,但是你应该仔细检查。

答案 1 :(得分:39)

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

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

  1. pan:使用Y坐标说到-200,然后编辑内容。
  2. 将更多内容放入隐藏部分,再次平移以显示新的房地产
  3. 完成后,恢复ScrollView的高度和X,Y位置的值。
  4. 确保滚动视图框架矩形小于包含的视图。

答案 2 :(得分:25)

新:2013年3月26日

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

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

    这是我做的(用**突出显示的重要部分):(见code

    1. 创建启用了故事板的新项目
    2. 放入UIScrollView,在视图控制器的身份检查器中设置类
    3. 在属性检查器中,将模拟指标下的尺寸更改为自由形式**
    4. 选择滚动视图;在属性检查器中,启用“启用滚动”和“背景”为“白色”(您将找出原因 - 如果您不这样做)
    5. 在“大小检查器”下(选择了滚动视图),将高度更改为900,例如**
    6. 添加按钮,一个在顶部,一个在底部
    7. 为两个按钮添加buttonTouchUpInside的默认处理程序,只需添加Log sender。
    8. 请参阅Code选择View Controller并滚动视图并检查检查员。

答案 3 :(得分:11)

只需将视图控制器的“模拟尺寸”更改为自由形式并设置大于通常尺寸的高度,您就可以看到需要编辑的所有插座。

答案 4 :(得分:4)

在iOS 6.0上,您可以在滚动视图中拖动容器视图。这将自动为当前场景之外的内容创建新视图。然后,您可以根据需要调整此视图的大小以适合您的内容。

我相信您仍然需要在运行时设置ScrollView内容高度,但至少您可以一次设计内容视图而无需在IB上向上和向下滚动。

答案 5 :(得分:2)

只需从您尝试调整大小的任何视图中取消选中“自动调整大小子视图”,它就应该保持所有对象不会随之调整大小。

答案 6 :(得分:0)

我一直在努力解决这个问题,我尝试过的每件事都失败了。

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

最后下载了Dickey Singh的代码,该代码完美无缺但没有什么特别之处。 (优秀的清洁解决方案BTW)。所以,我添加了一个容器视图,就像我在代码中一样,它破了!

经过一些实验,我弄清楚了发生了什么。跟我说吧。

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

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

3)无论自动布局如何,如果滚动区域内的任何视图与水平或垂直框架边界完全匹配,则滚动视图将不再用作滚动视图。这适用于我自己的代码和Dickey Singh在我尝试的每种可能配置中的代码。

我不知道是什么导致了(3),但它显然是一个错误。

我希望这可以帮助那些努力使用滚动视图的所有人。我想有些人没有任何问题地使用它们,有些人(像我一样)注意到了它们的问题。

答案 7 :(得分:0)

这是我在Storyboard中设计一个内容大于屏幕的ScrollView的解决方案(好吧,除了1行代码:-):

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

答案 8 :(得分:0)

我目前正在开发适用于iOS 7的应用程序,我完全按照@Dickey Singh的回答,但它在开始时不起作用。 检查故事板后,我发现我们还需要为拥有scrollView的视图控制器添加自动布局约束。 似乎在Xcode 5之前会自动添加这样的自动布局约束,但现在我们需要自己做。 添加约束的方法:首先在故事板中选择视图控制器;在顶部菜单中输入“编辑器”;选择“解决自动布局问题”;选择“在容器中添加缺失约束”。完成: - )