如何在界面构建器中操作更高的视图?

6

好的,我正在学习在界面构建器中使用UIScrollView。由于scrollView本身没有任何内容,我创建了另一个视图——contentView,用于容纳我的控件和可滚动内容。我将控件、标签等放入此视图中,然后在代码中设置scrollView的contentSize为此contentView的大小。

我的问题似乎非常简单和显而易见,以至于我一定错过了某些东西。当我在IB中创建这个XIB时,我得到了您标准的空iPhone界面窗口。我在其上放置了一个scrollView,它占据了整个窗口。我在其上放置了一个视图,它占据了整个scrollView。我添加了一些控件,在IB中我仍然可以看到它们位于contentView矩形内。

我的问题是,如何在IB中处理/添加位于contentView可见部分之外的控件?哈哈。它似乎很简单,但我就是不明白。我可以设置contentView的高度或将矩形拖动到我喜欢的任何位置(实际上这就是拥有scrollView的全部意义),但固定的UI窗口从IB中不会扩展,因此我无法看到“屏幕外”的contentView部分以添加更多控件。就像它只是固定在那个大小,因为那是一个iPhone屏幕的大小,它不会让我使它更大/更高。

我做错了什么?

-a


很烦人的是你看不到屏幕外的部分,你可以手动设置框架并且它们会在屏幕外但你看不到它们,我还没有真正尝试解决这个问题,但似乎并不是明显的事情,如果有可能的话。 - Daniel
@Daniel - 请看下面的被接受的答案。一旦关闭所有模拟的UI元素,您可以将视图设置得尽可能高。显然,如果您要使其比iPhone屏幕更高,您需要将其放入ScrollView中。 - Aubin LaBrosse
6个回答

12
你需要关闭所有模拟的用户界面元素(如状态栏),使其变为“未定义”,除了大小,你需要从下拉列表中选择“自由形式”,然后使用标尺选项卡设置视图高度为任何喜欢的高度。
例如,在这里我选择了照片视图控制器,并在右侧边栏中将大小设置为“iPad全屏幕” - 但我也可以将其更改为“自由形式”来设置任何高度。 在界面构建器中选择VC 自定义大小设置

1
随着Xcode的更新版本,术语“Freeform”被使用。 - ThomasW
我认为这个答案也是我需要的,但我不理解它。什么是“模拟用户界面元素”?关闭用户界面元素是什么意思? - sigfpe
1
@sigfpe:我添加了图片,展示了模拟用户界面元素的设置位置。 - Kendall Helmstetter Gelner

3

首先,通过任何您喜欢的方式添加一个 ViewController。然后在界面生成器中,单击视图控制器图标(位于左侧)。在连接检查器中单击标尺图标“显示大小检查器”。将模拟尺寸的选项列表更改为“自由形式”,并将其高度增加到任何您想要的尺寸。希望这有所帮助。


2
将视图控制器的模拟大小设置为自由形式,以便您可以添加控件,并将其调整为足够大的尺寸。请参考以下截图:enter image description here

2

没关系。您可以将内容视图向上拖动,以使一些控件脱离屏幕,然后添加更多控件/扩展到刚刚通过将顶部内容移出顶部而使其可见的部分。实际上,您可以通过用鼠标拖动来在IB中物理滚动contentView。看起来有点违反直觉,但无论如何。


1

如果您不想创建一个视图放在滚动视图中,那么您就不必这样做。在您的情况下,听起来这没有太多意义。

至于您问题的第二部分,您可以直接将项目放在滚动视图上(毕竟它是一个视图),作为子视图。如果您希望它们处于屏幕之外,那么只需设置它们的框架以处于您想要的特定 x、y 坐标即可。但是,您必须确保您的滚动视图的 contentSize 属性足够大,以容纳整个内容,这就允许水平/垂直滚动。


0

你可能希望以编程的方式处理屏幕外元素,而不是使用 xib 文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接