自定义 UI 按钮的优势

Advantage of Custom UI buttons

我一直在面试一份 iOS 工作,收到了很多关于自定义 UI 的问题,更具体地说是自定义 UI 按钮。我开始尝试阅读它并发现 Core Graphics 用于制作这些自定义按钮。

我想知道使用 corE 图形制作的自定义按钮与使用 UI 图像以及在 adobe 或 sketch 上创建的图像,然后在其上放置 UI 按钮相比有何优势.除了对流程进行更多定制之外,还有什么特别的优势吗?

顺便说一句,我想知道是否有针对 obj-c 的任何好的核心图形 (Quartz 2d) 教程,我发现很多 swift,但没有那么多 obj- c.

有意思的是面试题!

您可以在 PaintCode 中设计按钮,将您的绘图转换为代码。据说使用 Core Graphics 时,性能会更好,而且无论设备大小如何,它都应该看起来不错。 PaintCode 谈到了好处:"Resolution independence & other benefits No more @2x resources. Future proof. Creating dynamic, parametric drawings is easy."

有关详细信息,我会查看 FAQ, Question 2。以下是前几段:

Using PNG images to draw user interfaces is tedious. PNG images are not resolution-independent, so you have to provide many variants for all kinds of displays. Some effects are also difficult (if not impossible) to achieve using raster images. For exampe, you might want to draw something with complex resizing behavior, or you might want to alter the color of the drawing based on some outer conditions.

A better approach than using images is to use Objective-C or Swift code to draw the user interface. The code is resolution-independent and very flexible, so it works really well on all kinds of displays.

附带说明一下,我发现使用图像比使用 PaintCode 更容易。元素的定位,考虑到图像本身的插入与代码中的插入,在实践中会导致一堆问题。 PaintCode 还使用 springs 和 struts 来帮助调整图像在不同设备上的大小,但是在故事板中将其与布局约束结合使用时必须小心。您可以在 PaintCode 中做一些事情来让您的生活变得更有趣,但需要一些练习才能真正掌握它。制作图像的 @2x 和 @3x 版本确实没那么糟糕——所以如果你能避免 PaintCode,我只是为了避免头痛。