iOS:在故事板中将子类从UIView更改为UIScrollView

时间:2012-04-18 14:11:15

标签: ios uiview uiscrollview subclass

我创建了一个基于故事板的项目。在其中一个视图控制器的视图中,需要放置一些额外的元素,这会导致视图高度增加,从而视图现在必须是可滚动的。是否可以在故​​事板中简单地将UIView的类类型更改为UIScrollView?它真的会将顶级UIView转换为UIScrollView吗?只是在没有太多变化的情况下寻找快速简便的方法。

由于

4 个答案:

答案 0 :(得分:5)

您可以将storyboard打开为xml源代码文件,查找视图对象并将其替换为scrollview。右键单击Xco​​de中的.storyboard文件,然后选择Open As→Source Code。然后搜索您的场景的xml片段(例如,Cmd + F和类型控制器名称)。顶视图对象将如下所示:

<view key="view" contentMode="scaleToFill" id="Jjm-HD-A8W">
  ...
  (suviews and constraints)
  ...
</view>

view元素更改为scrollView(不要忘记结束标记):

<scrollView key="view" contentMode="scaleToFill" id="Jjm-HD-A8W">
  ...
  (suviews and constraints)
  ...
</scrollView>

然后使用Interface Builder打开.storyboard。您的视图现在变成了滚动视图。

此方法有两个优点:您不会松开任何约束,并且您会在属性检查器中看到所有特定于scrollview的属性。

答案 1 :(得分:4)

您必须将UIView类型更改为UIScrollView(身份检查员),并在控制器viewDidLoad方法中通过将视图转换为{contentSize来为视图指定UIScrollView {1}}:

[(UIScrollView *)self.view setContentSize:CGSizeMake(320, 700)];

答案 2 :(得分:3)

实际上有更好的方法可以做到这一点。

  1. 打开StoryBoard中的UIView并剪切到剪贴板中的任何内容。
  2. 删除UIView
  3. UIScrollView对象插入StoryBoard。
  4. 从剪贴板粘贴到此新对象中。
  5. 此方法将保留您为视图内部内容配置的所有委托和IBOutlet设置。

答案 3 :(得分:0)

更简单的方法是只使用滚动视图并将contentsize设置为与框架相同的大小 - 因此没有可滚动区域。例如

scrollview.contentsize = CGSizeMake(320,480);

然后当您需要更大的视图时,只需根据需要更新它。您需要确保关闭反弹,否则您仍然可以在scrollView中拖动。