如何在Interface Builder中编写根视图的子视图?

时间:2010-08-12 21:24:58

标签: iphone ipad interface-builder uiscrollview ios

我正在尝试创建一个可以滚动的控件(按钮,文本视图,标签等)的视图,因为我没有足够的屏幕空间用于所有控件。我知道我需要在我的应用程序中使用根视图作为UIScrollView,我需要附加一个包含所有控件的UIView。问题是,在我将根视图设置为UIScrollView之后,我向根视图添加了UIView,Interface Builder将不允许我放置任何控件,它只是将它们全部放在中心

  1. 我是否正确理解了如何制作视图滚动?
  2. 如果是这样,我如何让Interface Builder允许我定位我的控件?
  3. 一旦我能够做到这一点,我如何在Interface Builder中定位超出窗口尺寸的控件,因为它可以滚动?
  4. 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

根据我的经验,你最好将UIView作为根视图,然后将UIScrollView作为该视图的唯一,屏幕填充子视图。在代码(丑陋的演员表)和扩展时节省了一些麻烦(之后如何将一些固定屏幕的元素放在那里?)

如果你想把它留在IB中,

  • 将自己的自定义视图添加到库中(抱歉,没有经验)或
  • 只需将大UIView放在滚动视图中,然后按x / y位置定位元素,或
  • 将您的root-views状态栏设置为未指定,以便您可以将根视图的大小调整为正确布局scrollview内容所需的大小,完成后再将其重新包装为320x480(但请确保禁用对正确的元素进行自动调整,或者调整大小操作会破坏您的工作),或者
  • 单独设计UIView并将其拖放到位置作为滚动视图的子视图,文档窗口中的!使用cmd-0,那个窗口!父母会在你把东西放进去之前点亮。将放下的子视图的左上角x,y设置为0,0。 (此方法要求您在每次拖放时都链接所有出口)

如果选择采用非IB路由,请设计UIView并将其另存为nib,然后在rootcontroller加载时以编程方式加载nib。 (关于SO的话题有很多)当你做对了,从设计/ IB的角度来看,这将是最友好的方式。

所以..很多选项,其中没有一个真的好。 IB可以创造奇迹但你需要一些时间来理解它。 (我还在苦苦挣扎......欢迎提出建议)


为清楚起见,我的典型视图 - scrollview-view-elements布局看起来像是假的数字,如:

View (320x480-ish)
    Scroll View (320x480-ish)
        View (1024x1024)
            Label (positioned 0,0)
            Button (positioned 500,900)
            ImageView (1024x800, positioned 0,100)
    UISearchBar (possibly, always on screen, above scrollview or sliding in, ...)