9

我正在我的 iPhone 应用程序中构建一个数据输入表单,并且有比屏幕上显示的更多的数据字段。我想我应该将它们放入 UIScrollView 中,以便用户可以滚动浏览表单。在 Interface Builder 中构建它的最佳方法是什么?我知道我可以以编程方式完成,但如果可以的话,我想在 Interface Builder 中完成。问题是,如果 UILabels、UITextFields 等不在 iPhone 主屏幕之外——在 UIScrollView 变得有用的屏幕部分,我该如何布置它们?

4

7 回答 7

7

我为这个问题找到的最好的解决方法(我认为这对 Interface Builder 来说很尴尬)是这样的:

  1. 在 UIScrollView 中放置一个“容器”UIView,使用检查器将容器 UIView 的大小设置为所需的大小(例如 320 x 1200),然后在该容器视图中添加您的内容。(您的按钮、文本字段等)。
  2. 在代码中将 UIScrollView 的 contentSize 设置为与容器 UIView 的大小相同。例如在 viewDidLoad 的某个地方(例如 scrollView.contentSize = containerView.frame.size;)
  3. 要在 Interface Builder 中修改超出滚动视图范围的内容,您必须每次将容器视图拖到滚动视图之外,进行修改,然后将容器视图拖回 UIScrollView 内并构建。
于 2012-05-03T07:37:44.837 回答
5

这实际上很简单:

  1. 创建一个新的视图控制器类,例如 MyScrollViewController

  2. 创建一个以 UIScrollView 作为最顶层视图的新 xib,并将 File's Owner 的类设置为 MyScrollView Controller

  3. 将 File's Owner 的 view 属性设置为滚动视图

  4. 拖动滚动视图的底部以创建所需的大小。

  5. 将您的各种其他 UI 元素定位为滚动视图的子视图

  6. 在 MyScrollViewController.h 中为滚动视图创建并连接一个 IBOutlet,例如

    @property (retain, nonatomic) IBOutlet UIScrollView *scrollView;
    
  7. 在 MyScrollViewController 的 viewDidLoad 方法中,添加以下代码行:

    self.scrollView.contentSize = self.scrollView.frame.size;
    

就是这样的人!

于 2011-12-31T02:16:10.647 回答
1

在“Size inspector”上设置“Scroll View Size”的“Content Insets”:Bottom = YourFrameHeight - ScreenHeight。它将允许您在 UIScrollView 的从上到下、从下到下的范围内滚动

于 2011-11-16T07:55:14.773 回答
0

在 IB 中双击打开UIScrollView自身,并将大小增加到您需要的大小或更大(您可以随时在运行时缩小)。然后只需添加元素。

编辑:不起作用 - 请参阅此处

于 2010-08-11T13:53:20.977 回答
0

我也有同样的问题。我最终做的是在其中放置另一个 UIView 并将高度设置为我想要的任何值。然后我把我所有的 UI 元素都放在里面。这允许您上下拖动内部视图。

于 2010-08-11T13:59:45.727 回答
0

在 xCode5(没有故事板,使用自动布局)中对我有用的是使用 7 步答案,上面写着“这就是所有人!” 并添加两个步骤。

8) 将一个新的 UIView 拖到界面生成器中。不进入滚动视图。就靠它自己。将您所有的控件/视图放入其中,并使其尽可能大。我将此视图连接为 contentView。

@property (weak, nonatomic) IBOutlet UIView *contentView;

9) 然后在 - (void)viewDidLoad

[self.mainScrollView addSubview:self.contentView]; [self.mainScrollView setContentSize:CGSizeMake(self.contentView.frame.size.width,self.contentView.frame.size.height)];

只是说这对我有用。

于 2014-06-18T17:19:22.500 回答
0

这一切终于有了一个明智的解决方案,那就是在 UIScrollView 中放置一个 Container View。由于 Interface Builder 分别在 Container View 中显示 UIViewController,您终于可以看到您的 UIScrollView 内容会是什么样子,而无需交叉手指并站在头上。

您仍然需要以编程方式设置内容大小,但至少您现在可以可视化它正在发生的事情。

于 2016-07-20T23:09:06.410 回答