2011-01-20 42 views
2

我不知道我的客户如何嘲笑他们的截图,但他们结束了一个图像,其中导航栏有一种双色调的金属外观,就像这样:如何让iPhone应用上的导航栏看起来像金属?

Metallic.

但是,当我构建应用程序,它结束了对白色渐渐从我的色彩褪色,就像这样:真的很喜欢的方式

Not so metallic.

麻烦的是,客户看起来他们的实物模型。我能做什么?

回答

5

子类UINavigationBar。在你的子类中,重写drawRect:来自定义绘制你想要的东西。在UINavigationController的实例中,确保导航栏是您的子类的一个实例。

如果你编程实例化您的导航控制器,你可能无法做到这一点 - 你可能不得不求助于添加类别UINavigationBar重写所有实例绘制:

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

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

+0

这就是我们采用了。非常感谢。 – 2011-01-21 17:56:22

1

在@乔纳森的回答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); 

} 
+0

雷文德利希是王牌。 – 2011-01-21 17:56:41

相关问题