【问题标题】:Structuring iPhone/iPad application views构建 iPhone/iPad 应用程序视图
【发布时间】:2010-05-02 10:24:29
【问题描述】:

我对我想要构建的应用程序有一个想法,并且我是 iPhone/iPad 开发的新手(但对使用其他语言/框架(如 .NET 和 Java)进行开发并不陌生)。我想在屏幕上布局一些视图,以便它们从不同方向动画(滑入)到它们的位置。

问题是关于应用程序的结构,如果我在屏幕上说 4 个包含业务数据的矩形区域,例如联系人(姓名、照片等),它们都占用不同宽度的屏幕(假设第一个联系人占据屏幕的一排,但接下来的 2 个每个联系人占据下一行宽度的一半,依此类推)。

我应该为不同大小的联系人视图(即 LargeCustomView 和 SmallCustomView,以及我制作的任何其他特殊类型)创建自定义视图,还是应该全部为一种类型,例如 CustomerDetailsView 可以拉伸以适应设计时间?

另外,如果在一个屏幕上有相同自定义视图的 3 个不同实例,那么视图控制器是否也有 3 个实例?我对为视图背后的数据提供动力有点困惑,有人可以为我解释一下吗?我是否只为每个实例在视图控制器上设置属性(比如实例变量 ContactForView)?

感谢您提供的任何帮助

干杯,

标记

【问题讨论】:

    标签: iphone design-patterns ipad


    【解决方案1】:

    我应该为不同大小的联系人视图(即 LargeCustomView 和 SmallCustomView,以及我制作的任何其他特殊类型)创建自定义视图,还是应该全部为一种类型,例如 CustomerDetailsView 可以拉伸以适应设计时间?

    我想只有你能回答这个问题。如果 UIView 自动调整大小的掩码足以容纳两种布局,您可能应该只选择一类。如果这还不够,您可以覆盖 layoutSubviews 以考虑不同的大小,或者使用一个通用的超类来包含逻辑和两个子类来执行不同的布局。

    另外,如果在一个屏幕上有相同自定义视图的 3 个不同实例,那么视图控制器是否也有 3 个实例?

    由于 UIViewController 的工作方式,Apple 通常建议每个屏幕不要有多个视图控制器。来自文档:

    您不应该使用视图控制器来管理仅填充其窗口一部分的视图,即仅填充由应用程序内容矩形定义的区域的一部分。如果您想要一个由多个较小视图组成的界面,请将它们全部嵌入到一个根视图中,并使用您的视图控制器管理该视图。

    否则,像设备旋转这样的事情会变得很棘手,因为非全屏的视图控制器可能会对此类事件做出不同的反应,而 Apple 的 UIViewController 并不是为此而编写的。但是,没有人阻止您编写自己的视图控制器(源自NSObject,而不是源自UIViewController),所以我建议:如果视图非常复杂,为它编写一个自定义控制器类,但坚持使用一个 UIViewController每个屏幕。

    【讨论】:

    • 感谢 Ole,所以在逻辑上对视图元素进行分组以便它们在屏幕上形成单独的部分时,您只建议使用标准视图控件构建它,但是在一个 nib 中?
    • 不一定。这完全取决于你。如果您有可以通过从 NIB 创建公共子视图来减少的重复,请执行此操作。 NIB 不绑定到视图控制器。
    • 啊,我明白了,所以您实际上可以创建许多包含不同控件集合的 NIB 文件,但在主视图控制器中包含和管理它们,对吧?顺便说一句,我知道很多这种设计级别的东西都是主观的,但你永远不知道新框架中存在什么样的非官方标准
    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2023-03-11
    • 2015-05-23
    相关资源
    最近更新 更多