storyboard/xib 是否应该添加可选视图,然后隐藏或以编程方式添加? (良好做法)
Should optional views be added by storyboard/xib and then hidden or added programmatically? (Good practices)
我正在开始一个新项目,我对故事板的良好做法有一些疑问,特别是关于可选的隐藏视图(仅在特定情况下显示)。
假设您有一个 pdf 下载器应用程序,当用户 select 下载按钮时,会出现一个 UIProgress 栏并显示下载进度。这个进度条应该包含在情节提要中还是在用户按下下载按钮时以编程方式生成?
这是一个简单的例子,但是如果不仅有一个 UIProgressBar 还有多个隐藏(可选)按钮呢?如果某些按钮重叠怎么办? (我知道重叠的按钮是不好的设计,但只是为了举例说明)
应该隐藏还是以编程方式添加?性能怎么样?有人说解析 Storyboard/Xib 比以编程方式构建视图需要更多时间。
在 DonaldKnuth 的论文 "Structured Programming With GoTo Statements" 中,他写道:"Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."
所以,您正在尝试解决性能问题您(目前)确实没有。
您决定永久或临时拥有一个视图应该基于视图使用的上下文,而不是 xib/stb 与编程方法之间的一些传闻性能问题,类似于平台战争,但除此之外,考虑到 LLVM 编译器今天的工作方式, iPhone 4或更高的硬件性能是什么,基本上是胡说八道。
这是一个简单的规则。在 IB 中拥有所有视图,根据需要隐藏或取消隐藏它们,并且 add/remove 以编程方式查看视图 只有在您能给出充分理由的情况下。
我理解您本能地希望做到正确,所以与其尝试在一个控制器中管理一百万个视图,不如看看被讽刺地称为 Massive View Controller 的问题。
适当分解为自定义视图,关注点分离,明确定义的职责拆分为更多视图控制器,视图控制器包含,是回答以解决您的问题。
您首先希望您的应用正确工作。您可以通过合理的架构实现这一点,这样您就能够保持控制。用户不会欣赏您以编程方式实例化某些按钮,因为他们根本不在乎。但是,如果应用程序的状态不一致,因为您的视图控制器有 7000 行并且是意大利面条地狱或正在崩溃,那就是一个问题。
如果您打算使用故事板;建议包含 view/buttons 等。您始终可以从代码中隐藏/取消隐藏它们。
有一个思考过程,而不是聚集你的观点。拥有多个视图并使您的应用看起来整洁
我正在开始一个新项目,我对故事板的良好做法有一些疑问,特别是关于可选的隐藏视图(仅在特定情况下显示)。
假设您有一个 pdf 下载器应用程序,当用户 select 下载按钮时,会出现一个 UIProgress 栏并显示下载进度。这个进度条应该包含在情节提要中还是在用户按下下载按钮时以编程方式生成?
这是一个简单的例子,但是如果不仅有一个 UIProgressBar 还有多个隐藏(可选)按钮呢?如果某些按钮重叠怎么办? (我知道重叠的按钮是不好的设计,但只是为了举例说明)
应该隐藏还是以编程方式添加?性能怎么样?有人说解析 Storyboard/Xib 比以编程方式构建视图需要更多时间。
在 DonaldKnuth 的论文 "Structured Programming With GoTo Statements" 中,他写道:"Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."
所以,您正在尝试解决性能问题您(目前)确实没有。 您决定永久或临时拥有一个视图应该基于视图使用的上下文,而不是 xib/stb 与编程方法之间的一些传闻性能问题,类似于平台战争,但除此之外,考虑到 LLVM 编译器今天的工作方式, iPhone 4或更高的硬件性能是什么,基本上是胡说八道。
这是一个简单的规则。在 IB 中拥有所有视图,根据需要隐藏或取消隐藏它们,并且 add/remove 以编程方式查看视图 只有在您能给出充分理由的情况下。
我理解您本能地希望做到正确,所以与其尝试在一个控制器中管理一百万个视图,不如看看被讽刺地称为 Massive View Controller 的问题。
适当分解为自定义视图,关注点分离,明确定义的职责拆分为更多视图控制器,视图控制器包含,是回答以解决您的问题。
您首先希望您的应用正确工作。您可以通过合理的架构实现这一点,这样您就能够保持控制。用户不会欣赏您以编程方式实例化某些按钮,因为他们根本不在乎。但是,如果应用程序的状态不一致,因为您的视图控制器有 7000 行并且是意大利面条地狱或正在崩溃,那就是一个问题。
如果您打算使用故事板;建议包含 view/buttons 等。您始终可以从代码中隐藏/取消隐藏它们。 有一个思考过程,而不是聚集你的观点。拥有多个视图并使您的应用看起来整洁