如何在 Swift 中以编程方式复制视图?自动布局如何影响新创建的视图?

How can you duplicate a view programmatically in Swift? How does Auto-Layout affect the newly created View?

所以我有一个 table 视图,它根据其他一些数据显示许多点。 table视图中的每个单元格包含不同的数字,需要根据该数字显示一定数量的圆点。例如,单元格1对应5个点,单元格2对应3个点,依此类推。

由于所有单元格都至少包含一个点,因此我创建了一个包含单个点的原型单元格(称为 dotView,这是我正在使用的自定义视图)。

我想基本上复制点数次以匹配我需要的数字。

这些点是垂直对齐和定位的,所以我只需要将 dotView 复制并粘贴到其自身上方,但将其视为一个单独的视图,这样我就可以访问它的成员而无需更改任何其他 dotView。

如果成功,是否需要自己设置自动布局参数?或者它会继承一些原型值吗?

如果你只是在笔尖(故事板)中设计东西,你当然可以做到。您在 Interface Builder 中看到的任何视图都可以被复制;只需说复制(或按住 Option 键拖动)。然后您将必须完全配置新副本。

但是,当应用程序 运行 时,您不能神奇地 "copy and paste" 界面中 代码 中的现有视图。在代码 中 执行此类操作的标准方法是在.xib 文件中设计自定义视图。然后,每当您需要此视图的新副本时,您就可以加载 nib 并检索它。这基本上只是制作此视图(及其所有子视图、nib 中的设置等)的新但完全配置的实例的一种精心设计的方法。然后,您需要将新实例化的点视图手动(即在代码中)插入到需要的界面中。定位由你决定,如果它需要约束,你也必须添加它们。