如何让我的iPhone应用程序上的导航栏看起来像金属?

时间:2011-01-20 18:46:47

标签: iphone ios

我不知道我的客户如何模拟他们的截图,但他们最终得到的图像导航栏有一种双色金属外观,如下所示:

Metallic.

但是当我构建应用程序时,它会逐渐从我的色调渐渐变为白色,就像这样:

Not so metallic.

麻烦的是,客户真的很喜欢它们在模型中看起来的样子。我该怎么办?

2 个答案:

答案 0 :(得分:5)

子类UINavigationBar。在您的子类中,覆盖drawRect:以自定义绘制所需内容。在UINavigationController的实例中,确保导航栏是子类的实例。

如果您以编程方式实例化导航控制器,则可能无法执行此操作 - 您可能不得不为UINavigationBar添加一个覆盖所有实例的绘图的类别:

@implementation UINavigationBar (CustomDrawing)
- (void)drawRect: (CGRect)rect {
    // ...
}
@end

也可以使用方法调配来覆盖UINavigationBar的默认行为,但解释方法调整超出了这个问题的范围。

答案 1 :(得分:1)

紧跟@ Jonathan的回答Ray Wenderlich有一个关于创建自己的渐变的好教程。

这是一个snippit:

void drawGlossAndGradient(CGContextRef context, CGRect rect, CGColorRef startColor, 
    CGColorRef endColor) {

    drawLinearGradient(context, rect, startColor, endColor);

    CGColorRef glossColor1 = [UIColor colorWithRed:1.0 green:1.0 
        blue:1.0 alpha:0.35].CGColor;
    CGColorRef glossColor2 = [UIColor colorWithRed:1.0 green:1.0 
        blue:1.0 alpha:0.1].CGColor;

    CGRect topHalf = CGRectMake(rect.origin.x, rect.origin.y, 
        rect.size.width, rect.size.height/2);

    drawLinearGradient(context, topHalf, glossColor1, glossColor2);

}