ColorArt 代码从 macOS 迁移到 iOS。
#include <ColorArt/UIImage+ColorArt.h>
image = [image scaledToSize:self.fadedImageView.frame.size];
SLColorArt *colorArt = [image colorArt];
self.fadedImageView.backgroundColor = colorArt.backgroundColor;
self.fadedImageView.image = image;
self.view.backgroundColor = colorArt.backgroundColor;
self.headline.textColor = colorArt.primaryColor;
self.subHeadline.textColor = colorArt.secondaryColor;
self.text.textColor = colorArt.detailColor;
(来自 Panic 博客: http://www.panic.com/blog/2012/12/itunes-11-and-colors/)
iTunes 11 与之前版本相比有重大差异,而新的专辑显示模式更直观地体现了这一点。这种显示格式的头号特色是新视图样式,它将曲目列表与专辑封面艺术视觉上匹配起来。结果是,文本信息呈现出一个吸引人的显示效果,与专辑艺术作品无缝集成。
使用 iTunes 一天后,我对模仿此功能有多难感到好奇——使用源图像创建主题图像/文本显示。
一旦我开始过滤黑白背景,我的结果开始逐渐接近 iTunes。经过更多分析后,我发现 iTunes 还会寻找 artwork 的边界。例如,如果您在 artwork 图片周围有一个实色的白色边框,iTunes 将移除边框,并基于剩余的内侧内容设定主题颜色。我没有添加此功能,因为它超出了我简单的演示应用程序的范围。
在确定了背景颜色之后,下一步是寻找对比鲜明的文本颜色。我还是选择了简单计算颜色,这提供了令人惊喜的结果,但iTunes做得更好。如果我们仅仅依赖颜色频率,你会得到同一种颜色的不同文本类型(例如,主、次、细节)的不同变体。因此,为了改进结果,我接下来确保文本颜色之间足够不同,以被认为是不同的颜色。此时,一切都开始看起来非常不错。但是,为了确保所选背景颜色上的文本始终看起来很好,还需要考虑哪些其他方面?为了确保文本色彩丰富,我还添加了一些代码,以确保用于文本的颜色具有最低的饱和度级别。这防止了使用过于浅薄的颜色或过于淡雅的颜色,这些颜色可能不会给出最佳的外观。现在,文本有了与背景搭配得好的独特颜色,唯一剩下的问题是结果文本颜色可能会与背景不够对比,导致难以阅读。因此,我添加了最后一个检查,以确保任何文本颜色都能提供足够的对比度,以便于阅读。不幸的是,这个要求在寻找文本颜色时会导致罕见的“错误”,然后导致使用默认的黑色/白色颜色。
最终结果看起来大致如下
Copyright (C) 2012 Panic Inc. Code by Wade Cosgrove. All rights reserved.
Redistribution and use, with or without modification, are permitted
provided that the following conditions are met:
- Redistributions must reproduce the above copyright notice, this list of
conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
- Neither the name of Panic Inc nor the names of its contributors may be
used to endorse or promote works derived from this software without
specific prior written permission from Panic Inc.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PANIC INC BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
部分版权(c)2012 Fred Leitz
任何人免费获此软件及其相关文档副本(“软件”),可在无限制的情况下处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,以及允许获得该软件的人这样做,但需遵守以下条件
上述版权声明和本许可声明应包含在所有副本或实质性部分的软件中。
软件按“现状”提供,不提供任何形式、明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论这些责任是根据合同、侵权或其他任何索赔、诉讼或争议产生的,或与使用或其它处理软件有关。