当前位置: 首页 > 面试题库 >

将自定义UIColor引入Swift项目的最佳方法是什么?

贺浩漫
2023-03-14
问题内容

我想到了两种实现方式:在性能,可读性和可维护性方面,您认为其中哪一个更好?

  1. 创建像这样的UIColor扩展

    extension UIColor {
    class func myColor() -> UIColor {
        return UIColor(red: 128/255, green: 102/255, blue: 0, alpha: 1)
    }
    

    }

  2. 创建一个结构:

    struct Colors {
    static let myColor = UIColor(red: 255/255, green: 102/255, blue: 0, alpha: 1)
    

    }


问题答案:

答: 扩展,以我的专业意见。

考虑一下;从哲学上讲,您是在“扩展”所提供的颜色范围UIColor。如果您的颜色名称是唯一的,并且新功能遵循Apple的方法命名协议(即<colorname>Color),则扩展UIColor似乎更整洁。一种或两种新颜色(以我的观点)并不能保证全部是专用的struct

奖励答案:(structenum!) 在哪里合适?

  • 如果您的应用强制替换标准颜色(即自定义“原色”颜色)
  • 如果您的应用是专门设计为主题/自定义的,则最好带一个enum,作为可用选项的具体列表。
  • 如果您无法想到颜色的标准名称(sharkBlueColor,有人吗?)。
  • 如果您的应用程序专门用于绘图/绘画(在这种情况下,“调色板”结构可能是个好主意)。

…清单继续。随着Swift开发人员的成熟,您必须学会识别并自行决定!



 类似资料:
  • 问题内容: 这是我学习Maven的前两天,但我仍在努力学习基础知识。我有一个外部.jar文件(在公共存储库中不可用),我需要在我的项目中引用该文件,我正在尝试找出我的最佳选择。 这是一个小型项目,没有用于库的中央存储库,因此它必须是本地存储库(以某种方式添加到源代码管理中,不知道它是否应该以这种方式工作?)或.jar需要存储在磁盘在任何正式存储库之外。 1)鉴于我希望项目和库都在源代码管理中,因此

  • 问题内容: 我想出了以下解决方案,但想知道是否有人对此有更清洁的方法(在Xcode-Playground中进行了测试): 其中UIColor.greenColor()是任何UIColor的示例。 编辑:摘自莱昂纳多(Leonardo’s Answer),我想对其进行一些重构(他的所有测试仍然适用)。 问题答案: Xcode 8.2•Swift 3.0.2 从UIColor获取红色,绿色,蓝色和Al

  • CardView通常只用于装饰一个元素。但有时您需要在这个小部件中包装几个项目。比如收件箱应用程序。 那么,最好的方法是什么呢?它可以通过自定义LayoutManager甚至自定义ItemDecoration来实现。实现自定义LayoutManager并非易事(完全支持动画、项目装饰等)。在第二个选项中,边界的绘制必须手动实现,忽略CardView(和Android-L elevation)实现。

  • 问题内容: 我有一个带有递归parent_id的自引用MySQL表: 在测试期间,我想清空它,但TRUNCATE失败: 我目前必须手动删除所有记录,从树的底部开始向上操作。即使是小树,这也很繁重。 有没有解决此问题的简单方法?我无法在表中轻松地重新创建该表,因为其他表已对其进行引用(我已经将其截断了,所以那里应该没有数据完整性问题)。 问题答案: 为什么不: ?

  • 问题内容: 是什么使应用程序功能的模块/服务/位成为OSGi模块的特别好的候选者? 我对在我的应用程序中使用OSGi感兴趣。我们是一家Java商店,我们广泛使用Spring,因此我倾向于将Spring动态模块用于OSGi(tm)服务平台。我正在寻找一种将OSGi一点点集成到应用程序中作为试用的好方法。这里有人使用过此技术或类似的OSGi技术吗?有陷阱吗? @Nicolas-谢谢,我已经看过那个了。

  • 问题内容: 当您有多个都使用同一组JAR库的项目时,在每个项目中一遍又一遍地包含相同的JAR太麻烦了。如果我正在从事20个不同的项目,那么我宁愿没有20个完全相同的JAR文件。使所有这些项目(以及新项目)引用同一组JAR的最佳方法是什么? 我有一些想法,但每个想法都有一些缺点: 将所有JAR放在一个文件夹中,并使每个项目都在该文件夹中显示。 使用Eclipse创建一个“用户库”,并使每个项目都引用