我一直在尝试几种不同的方式,以编程方式通过“组件”通过“组件”创建真正可重用/可扩展的iOS应用程序。(仅限于swift,没有故事板)。
来自React的背景,我发现基于组件的策略非常直观且可扩展。
[尝试在iOS中复制此视图后,我发现创建自定义UIViews / UIStackViews(内部具有自己的可自定义UI组件)并在不同的视图控制器中初始化这些视图的效果很好,但是直觉上必须有战斗-测试了我可能不知道的执行此操作的策略。
[我想知道其他人如何在程序化Swift / iOS应用程序中采用“基于组件”的策略,以及他们可能会使用哪些架构模式来实现这一目标。
您所描述的是最好的方法。如果您查看Apple的UIKit策略,您会看到UIView
作为组件并不是非常有用,但其子类却很有用。例如,UIScrollView
是所有可滚动内容的基础,其中包括UITableView
,它可以说是iOS的骨干。]
这种将组件分解为逻辑行为,然后根据需要扩展这些行为的模式是UIKit所基于的。
您可能会认为SwiftUI在基于组件的体系结构上做得更好,尤其是与React的相似之处,但是基本上是相同的。 SwiftUI与众不同的是,SwiftUI具有不同的布局系统,该布局系统允许视图自行调整大小,从而非常容易地填充任意数据,从而使其易于重用。就是说,如果您在运行时检查视图层次结构,则SwiftUI仍然是99%的UIKit,具有新的布局算法,简洁的语法以及对Combine.framework的大量使用。
简而言之,子类化UIKit组件可以自己制作并重用它们。如果您不熟悉iOS,请先环顾四周,然后再编写自己的iOS。在Apple和GitHub之间,几乎所有内容都有一个现有组件。而且,当您编写自己的模型时,它是基于Apple的某些真正通用组件,例如UIPickerView
或UIButton
。希望有帮助。