8

我经常收到定义 iPhone 应用程序外观的模型图像。这些可以来自与项目一样多的不同方法,有时是balsamiq,甚至是手绘,有时是Photoshop。常见的一件事是通常为匹配某些公司品牌或整体应用程序设计而指定的条形色调颜色。

如果我在应用程序中打开这些设计图像之一并使用油漆滴管工具获取颜色的 RGB 值,那么有很多地方可以做到这一点,从包含按钮下边缘的最暗区域到最亮的区域酒吧的顶部。我找不到一个地方来对编程结果与模型匹配的颜色进行采样,在某些方面总是错误的,导致我眯着眼睛看着两张图像,试图调整一个或多个颜色值,使它们匹配得足够好。

给定一个客户想象导航栏应该如何出现的示例*,您如何确定正确的 UIColor 以应用于导航栏的 tintColor 属性?

*忽略包含彩虹效果、错误应用的渐变和其他幻想的模型。沿着中心线匹配颜色和亮度就足够了。这至少是一个站得住脚的立场——“你要求的不是 iOS 的工作方式!”

4

4 回答 4

5

使用 UINavigationBar/UIToolbar 和三个滑块设置应用程序以设置tintColor. 移动滑块直到看起来正确。

如果您还以某种方式将图像带入应用程序(UIPasteboard 或将其粘贴在资源中),使用-[CALayer renderInContext:]一些 CoreGraphics 魔术(kCGBlendModeDifference 和一些可以增加差异的东西;我忘记了我使用了什么),您甚至可以比较两个图像。

模拟器注意:您首先需要执行 Cmd-C 以将 Mac 粘贴板中的“粘贴”到模拟器粘贴板中。

我发现你无法在 iPhone 和 iPad 上重现默认渐变,除非使用 a tintColor = nil(iPad 默认也没有“光泽”)。您可以合理地接近,但是完成按钮的颜色全错了。

通常我在模型导航栏的中间进行采样。

于 2011-04-12T02:46:45.800 回答
3

我没有直接答案的好问题,但确实有解决方案。

通常,当我得到设计时,导航栏看起来并不像 iPhone 的带有色调的导航栏。梯度通常也不同。在我看来,有两种方法可以走:

  1. 让应用程序有点像设计
  2. 获取与设计完全相同的应用程序

大多数时候,我得到的几乎就像设计一样,这通常意味着对模型中使用的颜色进行采样并将其用作色调颜色(或者可能是稍微浅一点的版本)。

如果我真的想完全正确,方法是用图像替换默认的导航栏绘图。

只需为 UINavigationBar 创建一个类别并覆盖 drawRect。这效果出奇的好,大多数时候默认按钮将是您需要的颜色,并且无需额外工作即可混合。

无论如何,根据我的经验,让您的应用程序看起来与设计师的作品一模一样,这是很多通常被忽视的工作。但是如果做得好,那是完全值得的。

在下面的示例中,我需要支持两个不同的导航栏查找应用程序的两个不同部分,因此我使用视图的 tag 属性来检查要使用的版本。

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image=nil;
if (self.tag == 0)
    image = [UIImage imageNamed: @"navBarDesign1.png"];
else if (self.tag == 1)
    image = [UIImage imageNamed: @"navBarDesign2.png"];

[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
 }

 @end
于 2011-04-12T01:31:27.007 回答
3

详细说明 tc. 的答案,这是我在 AppStore 中找到的一个免费应用程序,名为“BarTint”

http://www.appstore.com/bartint

于 2013-02-18T21:08:36.047 回答
2

我总是将样式设置为“黑色不透明”(如果我使用 Interface Builder),然后对设计中最暗的颜色(通常是下边缘的区域)进行采样并将该颜色作为色调。这给了我一些非常相似的东西,但当然不允许我控制光(反射)侧。如果客户真的想要精确的渐变,我会使用图像(不幸的是)......

于 2011-04-12T01:57:31.993 回答