我不知道我的客户如何嘲笑他们的截图,但他们结束了一个图像,其中导航栏有一种双色调的金属外观,就像这样:如何让iPhone应用上的导航栏看起来像金属?
但是,当我构建应用程序,它结束了对白色渐渐从我的色彩褪色,就像这样:真的很喜欢的方式
麻烦的是,客户看起来他们的实物模型。我能做什么?
我不知道我的客户如何嘲笑他们的截图,但他们结束了一个图像,其中导航栏有一种双色调的金属外观,就像这样:如何让iPhone应用上的导航栏看起来像金属?
但是,当我构建应用程序,它结束了对白色渐渐从我的色彩褪色,就像这样:真的很喜欢的方式
麻烦的是,客户看起来他们的实物模型。我能做什么?
子类UINavigationBar
。在你的子类中,重写drawRect:
来自定义绘制你想要的东西。在UINavigationController
的实例中,确保导航栏是您的子类的一个实例。
如果你编程实例化您的导航控制器,你可能无法做到这一点 - 你可能不得不求助于添加类别UINavigationBar
重写所有实例绘制:
@implementation UINavigationBar (CustomDrawing)
- (void)drawRect: (CGRect)rect {
// ...
}
@end
这是也可以使用方法调整来覆盖UINavigationBar
的默认行为,但解释方法调整超出了这个问题的范围。
在@乔纳森的回答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);
}
雷文德利希是王牌。 – 2011-01-21 17:56:41
这就是我们采用了。非常感谢。 – 2011-01-21 17:56:22