从海量视图控制器中重构 Swift UIViewPropertyAnimators
Posted
技术标签:
【中文标题】从海量视图控制器中重构 Swift UIViewPropertyAnimators【英文标题】:Refactoring Swift UIViewPropertyAnimators out of massive view controller 【发布时间】:2018-11-12 21:55:49 【问题描述】:我正在尝试重构我现在有 >900 行(太多)的 Swift 大型视图控制器。
如何将我的UIViewPropertyAnimators
(约100 行)的创建与我的主要UIViewController
分开?
问题是UIViewPropertyAnimators
需要引用view
属性和UIViews
他们正在制作动画。我是否创建一个带有weak var
的struct
,通过依赖注入将view
引用分配给它?我还需要以某种方式引用UIView
对象。
不确定在不产生循环的情况下重构它的最佳方法是什么。有什么想法吗?
加法:
由于所有动画师只与窗口的一部分相关,我现在创建了一个子视图控制器并将动画师移动到那里。我认为这也是一个可行的解决方案。我不得不添加委托模式。最后,父视图控制器缩短了约 100 行,正如他们所说,我有“分离的关注”。
【问题讨论】:
你可以为 uiview 创建扩展,我认为 UIViewPropertyAnimators 不是唯一的问题。了解 MVVM 将您的UIViewPropertyAnimators
放在一个单独的文件中,然后在该文件中创建一个协议并通过定义UIViewController
类型的delegate
来访问您的view
属性
【参考方案1】:
例如:
名为 PropertyAnimators 的新文件
在该文件中导入您需要的所有库。然后像这样扩展原始视图控制器:
extension UIViewControllerName: UIViewController, (any other delegates that you need)
//PropertyAnimators code
【讨论】:
以上是关于从海量视图控制器中重构 Swift UIViewPropertyAnimators的主要内容,如果未能解决你的问题,请参考以下文章
如何从视图控制器发送数据以在 swift 5 中嵌入视图控制器?
如何从 Web 视图打开 Safari 视图控制器(swift)