【问题标题】:iOS 10 Swift and best practices for defining the UIiOS 10 Swift 和定义 UI 的最佳实践
【发布时间】:2017-10-03 05:21:31
【问题描述】:

我正在使用 Swift 开发 iOS 应用程序。我创建的另一个应用程序是我在 Objective C 中做的,大约在 2014 年的这个时候发布。故事板似乎同时让 UI 的东西变得更容易和更复杂,所以我试图找出当前的最佳实践观点发展。

在这一点上,对于多种屏幕尺寸来说,尺寸类和约束似乎几乎是必要的节省时间。早在 2014 年,情况就不是这样了,并且以编程方式跟踪 UI 布局,因为 CGRect 代码以编程方式使 UI 布局变得更简单,更好地进行代码重用,而不是创建一个全新的视图控制器来添加新的 UI 元素。看法。用约束代码做同样的事情似乎不那么吸引人,但如果我想在那里更多地重用代码,这也是必要的。

所以我想知道当前的做法是什么,因为我只是在考虑代码重用方面。编程约束似乎不如情节提要定义的约束优雅,但我不确定它们是否完全适用于 UI 代码,因为它们对于以编程方式即时更新 UI 似乎存在问题。

目前最好的策略是将所有内容包含在保留超级视图的布局中并保持大部分故事板为中心,或者为这些布局执行快速编程代码是否仍然有意义,因为我必须针对 iPad 和 iPhone 进行特定更改反正?在这个问题上,将截然不同的 UI 拆分为多个故事板(例如 2 个不同的 iPad 和 iPhone 故事板,因为这在某一时刻是默认设置)是否仍然有意义?

提前感谢您对此的回答。设备特定的东西似乎并不总是代码重用,但我想重用相对简单。否则我只是创建了比我严格需要的更多的 swift 类。

【问题讨论】:

    标签: ios swift user-interface storyboard interface-builder


    【解决方案1】:

    这本质上是基于意见的。从没有 Interface Builder 到只有 StoryBoard 的所有东西都可能在生产应用程序中使用,您几乎可以让任何东西工作。

    我个人倾向于将 Storyboard 用于除 TableView/CollectionView 单元格之外的所有内容。我发现它从我的类中删除了几乎所有的接口样板代码并使它成为,所以我只需要处理我的 ViewControllers 之间的接口。以下是我通常尝试遵循的指导方针:(再次...意见)

    • 使用以有用的方式组织的多个故事板:

    大型故事板变得难以维护,并且在编辑时性能明显受到影响。我们可以选择使用 StoryboardReferences,所以不妨使用它们。

    • 场景和视图控制器越多越好。 (在合理范围内)

    这使得事情更易于维护和重用。例如。可以在多个场景中使用的标题。不得不使用 containerVCs 和到处处理 segues 可能有点烦人,但我很少后悔将某些东西分离到它自己的 ViewController 中。

    • 不要对不同大小使用单独的接口文件。

    如果您想支持在 iPad(或任何未来的设备)上调整大小,则需要维护更多代码,并且会强制您将 ViewController 换入换出。更不用说向前发展了,很明显 Apple 假设您正在使用大小类而不是交换 ViewController,这显然是 Apple 平台开发的未来发展方向

    • 当您需要动画时,尝试将其范围缩小到更改单个约束。常量

    这极大地简化了您的代码,并且通常避免在故事板之外的任何地方处理大小类。复杂的动画并不总是可能的,但如果你愿意乱来,你可以做一个惊人的数量。它可以将切换操作缩小到 2 行代码,这非常好。使用 StackViews 在这方面也有很大帮助。

    要关注的另一件事是尽可能避免 IB 的字符串类型。这在 Swift 中要容易得多,并且有一些使用字符串支持的枚举和扩展的不错的解决方案,但具体细节可能超出了这个问题的范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多