swift - 从大量 View Controller 中重构 Swift UIViewPropertyAnimators

标签 swift model-view-controller refactoring uiviewpropertyanimator

我正在尝试重构我的 Swift 大型 View Controller ,它现在有 >900 行(太多)。

如何将 UIViewPropertyAnimators(约 100 行)的创建与主要的 UIViewController 分开? 问题是 UIViewPropertyAnimators 需要引用 view 属性和它们正在设置动画的 UIViews。我是否创建了一个带有 weak varstruct,我通过依赖注入(inject)为其分配了 view 引用?我还需要以某种方式引用 UIView 对象。 不确定在不产生循环性的情况下重构它的最佳方法是什么。有什么想法吗?

添加:

由于所有动画师只与窗口的一部分相关,我现在创建了一个 subview Controller 并将动画师移到那里。我认为这也是一个可行的解决方案。我必须添加委托(delegate)模式。最后,父 View Controller 缩短了约 100 行,正如他们所说,我有“分离关注”。

最佳答案

例如:

名为 PropertyAnimators 的新文件

在该文件中导入您需要的所有库。然后像这样扩展原始 View Controller :

extension UIViewControllerName: UIViewController, (any other delegates that you need) {
//PropertyAnimators code
}

关于swift - 从大量 View Controller 中重构 Swift UIViewPropertyAnimators,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53270678/

相关文章:

ruby-on-rails - 目录 : Polymorphic Controllers

c - 将遗留 C 代码(与全局变量的广泛使用紧密结合)重构为共享库

Java - 带有数组字段的枚举

python - 用于重构 for 循环和嵌套 if 语句组合的生成器

ios - CallKit 不会阻止数组中的数字

ios - 如何将 Firebase 快照中的变量分配给子节点中的值?

ios - SpriteKit Physicsbody 和 .allContactedBodies() 的时间

swift - FetchedResultsController 值不会覆盖自定义 NSManagedObject 初始值

php - Laravel 项目中的按钮是否应该触发 Controller 中的方法,如果是,如何触发

ruby-on-rails - 在 Rails 中建模这些关系的最佳方法