【问题标题】:Advantage of Custom UI buttons自定义 UI 按钮的优势
【发布时间】:2016-01-29 17:56:52
【问题描述】:
我一直在面试 iOS 工作,并且收到了很多关于自定义 UI 的问题,尤其是自定义 UI 按钮。我开始尝试阅读它,发现 Core Graphics 用于制作这些自定义按钮。
我想知道使用由 coreE 图形制作的自定义按钮比使用 UIImage 和在 adobe 或草图上创建的图像,然后在其上放置一个 UI 按钮有什么优势。除了更多的定制化过程之外,还有什么特别的优势吗?
顺便说一句,我想知道是否有任何关于 obj-c 的优秀核心图形(Quartz 2d)教程,我发现 swift 的数量很多,但 obj-c 的数量不多。
【问题讨论】:
标签:
ios
objective-c
core-graphics
quartz-2d
【解决方案1】:
有趣的是,这是一道面试题!
您可以在PaintCode 中设计按钮,将您的绘图转换为代码。据说使用Core Graphics,性能更好,无论设备大小,它都应该看起来不错。 PaintCode 谈到了好处:“分辨率独立性和其他好处没有更多的@2x 资源。未来的证明。创建动态的参数化绘图很容易。”
有关详细信息,我会查看FAQ, Question 2。以下是前几段:
使用 PNG 图像来绘制用户界面是乏味的。 PNG图像是
不是独立于分辨率的,因此您必须提供许多变体
各种显示器。有些效果也很难(如果不是
不可能)使用光栅图像来实现。例如,您可能想要
绘制具有复杂调整大小行为的东西,或者您可能想要
根据一些外部条件改变绘图的颜色。
比使用图像更好的方法是使用 Objective-C 或 Swift
绘制用户界面的代码。代码与分辨率无关
并且非常灵活,因此它适用于各种显示器。
不过,我发现使用图像比使用 PaintCode 要容易得多。元素的定位,考虑到图像本身的插图与代码中的插图,在实践中会导致很多问题。 PaintCode 也使用弹簧和支柱来帮助调整不同设备上的图像大小,但在将其与情节提要中的布局约束结合时必须小心。您可以在 PaintCode 中做一些事情来让您的生活更美好一点,但是需要一些练习才能真正掌握它的窍门。制作@2x 和@3x 版本的图像真的没有那么糟糕——所以如果你能避免PaintCode,我只是为了避免头痛。