如何在Interface Builder中使用主要iPhone视图之外的UI元素设置UIScrollView?

Jas*_*son 9 iphone data-entry interface-builder uiscrollview uitextfield

我正在我的iPhone应用程序中构建数据输入表单,并且屏幕上有更多的数据字段.我想我应该将它们放入UIScrollView中,以便用户可以滚动表单.在Interface Builder中构建它的最佳方法是什么?我知道我可以通过编程方式完成它,但如果可以的话,我想在Interface Builder中这样做.问题是,如果它们落在iPhone主屏幕之外,我怎样才能布置UILabel,UITextFields等 - 在UIScrollView变得有用的屏幕部分?

小智 7

我发现这个问题的最佳解决方法(我认为Interface Builder令人尴尬)是这样的:

  1. 在UIScrollView中放置一个"容器"UIView,使用检查器将容器UIView的大小设置为所需的大小(例如320 x 1200),并在容器视图中添加内容.(您的按钮,文本字段等).
  2. 在代码中,为UIScrollView设置contentSize,使其与容器UIView的大小相同.例如viewDidLoad中的某个地方(例如scrollView.contentSize = containerView.frame.size;)
  3. 要修改Interface Builder中滚动视图边界之外的内容,您必须每次将容器视图拖动到滚动视图之外,进行修改,然后将容器视图拖回UIScrollView内部并进行构建.


nor*_*man 5

这实际上很简单:

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

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

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

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

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

  6. 在MyScrollViewController.h中创建并连接IBOutlet以获取滚动视图,例如

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

    self.scrollView.contentSize = self.scrollView.frame.size;
    
    Run Code Online (Sandbox Code Playgroud)

所有人都是第14个!


jrt*_*c27 0

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

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