在 iOS 开发中使用视图的正确方法是什么?
What is the right way of using Views in iOS development?
我有一个自定义视图。它有这样的条件(仅示例):
customView(viewsNeed: Bool)
...
if viewsNeeded {
self.addSubView(newView)
self.addSubView(newView2)
} else {
self.addSubView(newView3)
self.addSubView(newView4)
self.addSubView(newView5)
}
然后我可以将此视图添加到我的 ViewController
:
self.view.addSubView(customView(viewsNeeded))
我想知道的是我该怎么办?像这样写条件,或者为此目的制作单独的视图。类似于:
视图 1
...
self.addSubView(newView)
self.addSubView(newView2)
视图 2
...
self.addSubView(newView3)
self.addSubView(newView4)
self.addSubView(newView5)
并在ViewController中添加其中之一:
if viewsNeeded {
self.view.addSubView(view1)
} else {
self.view.addSubView(view2)
}
在什么情况下创建什么样的视图更好,我应该如何决定这种事情?如果它是真实的,我需要一些非常广泛的答案和解释。
您描述的选项在概念上没有区别。从 MVC 模式的角度来看,它们都略有错误。您不必手动添加视图,视图必须自己创建其结构。
如果一个视图可以有不同的状态,您将在具有特定职责的视图中处理这些不同的状态。 UINavigationBar 就是一个很好的例子。它有一个明确的目的,为用户提供导航上下文,但它的状态(和上下文)可以使它看起来不同。
func pushNavigationItem(...) {
...
if self.items.count > 1 {
// show backButton
} else {
// hide backButton
}
}
如果不同的视图不能为了共同的目的一起工作,我不会将它们组合在一个容器视图中,而是根据您的需要将它们单独添加到 ViewController 中。
override func viewDidLoad() {
if userDidBuyContent() {
// add view with bought content
} else {
// add view to buy content
}
}
一般来说,保持视图层次结构尽可能平坦是一种很好的做法。您引入的视图越少,您的应用程序的性能就越好。决定最终取决于您,但请记住视图的目的是什么,以及子视图是否有助于该目的或是否真正服务于其他目的。
我有一个自定义视图。它有这样的条件(仅示例):
customView(viewsNeed: Bool)
...
if viewsNeeded {
self.addSubView(newView)
self.addSubView(newView2)
} else {
self.addSubView(newView3)
self.addSubView(newView4)
self.addSubView(newView5)
}
然后我可以将此视图添加到我的 ViewController
:
self.view.addSubView(customView(viewsNeeded))
我想知道的是我该怎么办?像这样写条件,或者为此目的制作单独的视图。类似于:
视图 1
...
self.addSubView(newView)
self.addSubView(newView2)
视图 2
...
self.addSubView(newView3)
self.addSubView(newView4)
self.addSubView(newView5)
并在ViewController中添加其中之一:
if viewsNeeded {
self.view.addSubView(view1)
} else {
self.view.addSubView(view2)
}
在什么情况下创建什么样的视图更好,我应该如何决定这种事情?如果它是真实的,我需要一些非常广泛的答案和解释。
您描述的选项在概念上没有区别。从 MVC 模式的角度来看,它们都略有错误。您不必手动添加视图,视图必须自己创建其结构。
如果一个视图可以有不同的状态,您将在具有特定职责的视图中处理这些不同的状态。 UINavigationBar 就是一个很好的例子。它有一个明确的目的,为用户提供导航上下文,但它的状态(和上下文)可以使它看起来不同。
func pushNavigationItem(...) {
...
if self.items.count > 1 {
// show backButton
} else {
// hide backButton
}
}
如果不同的视图不能为了共同的目的一起工作,我不会将它们组合在一个容器视图中,而是根据您的需要将它们单独添加到 ViewController 中。
override func viewDidLoad() {
if userDidBuyContent() {
// add view with bought content
} else {
// add view to buy content
}
}
一般来说,保持视图层次结构尽可能平坦是一种很好的做法。您引入的视图越少,您的应用程序的性能就越好。决定最终取决于您,但请记住视图的目的是什么,以及子视图是否有助于该目的或是否真正服务于其他目的。