2010-10-23 36 views
0

Folk,将元素垂直添加到scrollview:差异在Java和iPhone SDK之间?

来自Java/Swing世界,我有时会对iPhone上的UI编程感到困惑。我花了最后几个小时搜索Google的信息,但似乎我在Java中考虑了太多错误的问题。请您指点我的资源,以便更熟悉GUI概念以实现以下功能:

基本上,我想创建一个表示结构化文本(例如配方)的垂直滚动视图。每一步都有一个标题和一个文字说明。由于我想折叠和展开这样的步骤,标题将以某种方式交互,通过点击它可以显示或隐藏描述。

在Java中,我将创建一个呈现一个这样的部分的组件。布局管理器将计算组件的首选高度(显示或不显示描述)。

然后,在Java中,我将创建一个具有垂直布局管理器的面板,并按顺序添加我的组件。该面板将被放置在滚动窗格中;如果例如高度大于滚动窗格的高度,滚动窗格会要求面板布局自身,然后在其上显示一个视口。

什么Java提供我是:

  • 布点元件(计算其优选的高度和宽度),因此,不需要处理坐标和尺寸的
  • 动态创建UI的创建和过程中加入组分运行时

我在iPhone上的明白了什么:

  • 我可以将视图动态添加为视图的子视图,例如滚动型致电addSubview
  • 我甚至可以删除使用removeFromSubview的东西(如这里Clear content of UIScrollView解释)

我没有在iPhone上理解什么:

  • 做一个视图总是对应一个可见的屏幕(当我设置一个新的视图时,我确实使用了tab和navbar导航,它填充当前可见屏幕减去两个栏所需的空间)?
  • 或者是否可以定义一个视图,该视图的顶部(“北”)和中间的文本包含一个标签;如果是这样,这样的视图能否自动确定其高度?
  • 我可以通过类似于Java的方式来实现我的示例吗?还是需要我自己计算各个组件的所有尺寸和坐标? (这个例子似乎涉及该主题:iPhone scrollView add elements dynamically with id

或者,我可以使用WebView和呈现我的东西作为本地HTML使用JavaScript显示或隐藏节点?

感谢您的任何提示或链接!

+0

没有足够的信息为完整的答案,所以我只写一条评论。一个可能适用于您的想法是将其作为UITableView实现。 UITableView是UIScrollView的子类。这也不仅仅是一个简单的项目清单。它有组,页眉和页脚。你也可以在实际的表格单元中放置任何你想要的东西(比如可以根据你的要求呈现HTML的UIWebView)。 – 2010-10-23 22:42:53

+0

也许这是最直接的方法。我可以使用带有部分标题的表格,然后使用导航栏打开带有部分内容的新视图,而不是使用可以折叠的部分标题来构建页面。这至少会与iphone应用程序的标准可用性保持一致。也许从中学到的教训是,移动应用程序不是一个Web应用程序不是一个富客户端应用程序(从设计的角度来看)。 Thx – Sven 2010-10-24 09:20:29

回答

0

Cocoa没有布局管理器,视图根据其支撑和弹簧设置进行重新定位。有关该信息,请阅读文档:http://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/IB_UserGuide/Layout/Layout.html

要创建一个“包含顶部标签和中心文本的视图”,您可以使用子视图创建一个视图 - 其中一个是顶部标签,第二个是中心的textview 。如果您正确配置了所有子视图的struts/spring,它们将在容器视图调整大小时自动调整大小。

你应该也习惯了Interface Builder,在代码中创建视图是真正的麻烦。

+0

Interface Builder非常好,但以编程方式为您的应用程序创建UI有好处。 – 2010-10-23 23:05:29

+0

我很好奇听到有什么样的好处?对于任何更复杂的事情,然后创建一个tableView,我无法想象有人可以享受定位元素,设置它们的属性,代码中的所有内容。当然,有时你需要从代码中动态创建视图,但即使如此,我仍然从nib中加载它们,并根据需要添加到视图层次结构中。 – Michal 2010-10-23 23:11:47

+0

我也会尝试这样做。然而,只要你的内容是动态的(例如,考虑加载具有未知数量的科学论文而不是整个页面,但作为“可导航”页面),我想你需要动态地构建主UI。另外,我想知道嵌入到容器中的组件是否会导致容器自动调整大小,而不是相反。例如。文本组件列表中不断增长的文本可以让外部视图增长。 – Sven 2010-10-24 09:23:01