我一直在尝试从 UINavigationBar
复制渐变,以用作同一 View 上自定义 UIButton
子类对象的渐变。
但是,我想不通这些颜色是怎么得来的?也就是说,您只指定一种颜色来设置 UINavigationBar
的背景颜色 - tintColor
- 但它创建了一个漂亮的渐变,看起来至少有 4 种颜色?
不过,我真的只对“内部”顶部和底部颜色感兴趣 - 就在条形图周围 1px 边框内……虽然外部“边框”颜色确实看起来不同。
编辑 - 1
经过进一步研究,似乎正在操纵 HSB(而不是最初想到的 RBG)值以获得这些不同的颜色。
UIColor
上还有一个方便的方法来获取 HSB 值,这应该会有所帮助:
getHue:saturation:brightness:alpha:
到目前为止找到的有用引用资料
Programmatically Lighten a Color
From the book Fundamentals of Interactive Computer Graphics
编辑 - 2
如果您不知道可以通过编程方式在 UIButton
上设置背景渐变,请引用以下操作方法:
FUN WITH UIBUTTONS AND CORE ANIMATION LAYERS
Five Tips for Creating Stylish UIButtons (感谢@cdo 提供此链接)
编辑 - 3
我整理了一个电子表格,显示 UINavigationBar
及其对应的“后退”按钮(标题无关)的 HSB 值中的原始和“内部”渐变颜色(忽略最外面的颜色)并始终显示为白色)。
这是 Google 文档的链接,其中包含我为一些样本颜色收集的信息:
https://docs.google.com/spreadsheet/ccc?key=0AnKVtzkNS9scdGVRN01pa1NQcC1hdThNbEVzQU8wRlE&usp=sharing
注意:这些值是通过使用适用于 iOS 6.1 的视网膜、3.5 英寸 iPhone 模拟器(Xcode 版本 4.6)保存屏幕截图并使用 PhotoShop 滴眼 HSB 值找到的。
赏金标准
我已经就这个问题开放了一个悬赏计划,以增加对它的曝光度,并希望得到一个好的答案。我正在寻找的答案:
提供一种计算/近似(在大多数情况下)设置 tintColor
后创建的“内部顶部”和“内部底部”渐变颜色(参见电子表格)的 RGB 或 HSB 值的方法在 UINavigationBar
上。
如果您还提供一种计算“后退”按钮(类似于导航栏,但我'您是否发现这些颜色通常看起来略微“暗”)?
最佳答案
简答:不是渐变
长答案:应用色调颜色后,会在其上渲染一个透明的叠加图像。
它被称为:UITintedTopBarHighlight@2x.png,它在 UIKit 插图中。 (上传至此处:http://cl.ly/image/2c2V3t1D1T3L)
它是 2x88 像素的图像,必须在有色背景上水平重复。
对于后退按钮,它非常相似,但还有一个 mask 来赋予它形状。 UITintedBackButtonHighlight 和 UITintedBackButtonMask。
关于iphone - 如何复制 UINavigationBar 渐变颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304629/