iOS:如何在不同的应用页面之间有效地统一字体系列和大小?

时间:2017-01-24 23:03:13

标签: ios fonts font-size font-family

我正在使用Swift构建iOS应用程序。 在每个应用页面上,我们都有不同用途的文字标签。 例如,标题的文本标签,描述的文本标签。我们需要统一每种目的的文本外观。

我可以在界面构建器中统一他们的外观,比如所有文本标题,将字体系列设置为" Helvetica Nueue",字体大小为" 15"。但是,当我们的设计师更改字体系列和大小时,我们必须手动修改每个标签设置,效率非常低。

解决此问题的直接方法是,将字体系列和大小定义为实用程序类中的常量,然后在后面的代码中,在加载应用程序页面后设置所有文本样式。在这种情况下,当有任何变化时,我们只需要更新实用程序类中的常量。但是,这需要我们在接口构建器后面的代码中为每个文本标签添加引用,这也需要大量的工作,而且效率不高。

任何更好的想法,聪明有效地做到这一点? 感谢您的建议!

1 个答案:

答案 0 :(得分:1)

这是一个想法:

  • 为每个不同的标签/文本字段/ textview / ...样式定义一组UIView tag值。
  • 然后在Interface Builder中将UI标签/ textfields / textviews / ...设置为近似样式,以便您可以很好地了解事物的外观和大小。但是也要将tag值设置为与定义的相应样式相匹配。
  • 与设计师坐下来定义未来的证明粒度。我的意思是,两个标签现在可以具有相同的风格,但是(或者可能在可预见的未来)实际上被设计者认为是不同的;因此使用的相同风格可能只是一种“巧合”。
  • 随后创建一个定义这些样式的模块。
  • 在该模块中,创建一个遍历视图层次结构的方法,并根据您指定的tag值设置相应的样式。
  • 如果要设置不同的UI元素类型(例如UILabelUITextFieldUIButton),最有可能只为每种类型使用不同的tag范围,因为机会很多很高,他们会在某些时候被设计师视为不同。
  • 在您的代码中,您所要做的就是为您拥有的每个顶级视图调用上面的方法,例如viewWillAppear,...取决于您是否正在处理视图控制器,表格视图单元格,自定义视图,...

我希望这会有所帮助,或者它会为您提供一些方向,从而找到符合您需求和偏好的解决方案。

其他想法:

  • 为每个可预见的标签样式创建一个子类,您可以在其中设置所需的所有属性。
  • 在Interdace Builder中,将UI元素的类型更改为其相应子类的类型。

或者,组合:

  • 为每个要设置样式的UI元素类型创建一个子类。
  • 在IB中更改上述类型。
  • 在IB中设置tag以选择特定样式。
  • 这使您免于拥有“许多”子类,而这些子类只能存放在其中。设置一种风格。
  • 这会将所有样式(每个UI元素类型)保存在一个文件中,这对于比较和更新非常有用。