设计iOS应用程序的最佳实践

时间:2017-04-10 08:52:07

标签: ios swift xcode interface-builder

我想说我想为我的应用使用不同的字体,不同的字体大小和不同的配色方案,让我们说我想使用Interface Builder。

我希望能够在一个地方设置所有这些样式,而不是说要转到Interface Builder上的每个标签并更改其字体,颜色等。

实现这一目标的最常见方法是什么?

我知道您可以在代码中设置这些内容,但是我无法在Interface Builder中看到这些更改?

我对这一切都很陌生,来自网络开发背景,我可能会尝试将我以前的知识强加于此,但不得不一个一个地改变这些是一个维护噩梦,我似乎找不到任何直接在Interface Builder中创建自定义样式的方法。

我能想到的唯一方法是对每个视图进行子类化,例如标签,按钮等,为每个视图创建XIB,并使它们@IBDesignable。这是要走的路吗?对于简单的事情,感觉它只是一项不必要的工作量。

1 个答案:

答案 0 :(得分:1)

Apple提供的全局样式应用方式是通过UIAppearance API:https://developer.apple.com/documentation/uikit/uiappearance

这样做的好处是不需要在多个实例(例如UILabel)上反复设置相同的属性。但是,它不允许您在Interface Builder中预览样式(如您所愿),当您有多种方式可能需要根据其使用的上下文设置标签或按钮时,使用它们可能会非常棘手或不切实际。应用程序。

在故事板上预览UIViews样式或属性更改的唯一方法是使用@IBDesignable,如您所述。它肯定需要一些工作来设置,甚至更多的工作将其与命名样式和应用程序样式表的概念联系起来。

我自己经历过这个,我创建了一个框架,可以在任何应用程序中用于在Swift中或通过JSON样式表定义样式和样式表,然后在设计时看到在故事板上实时应用的那些样式。它提供了已经创建的UIView,UIButton,UILabel,UIImageView,UITextField和UITextView的@IBDesignable子类,以及通过样式表设置所有属性的钩子;您也可以随时扩展它以设置其他类型的组件。您可能会发现直接使用或作为示例实现可以使用@IBDesignable通过Interface Builder以您描述的方式进行样式化的示例:https://github.com/daniel-hall/Stylish