我不知道我的客户如何模拟他们的截图,但他们最终得到的图像导航栏有一种双色金属外观,如下所示:
但是当我构建应用程序时,它会逐渐从我的色调渐渐变为白色,就像这样:
麻烦的是,客户真的很喜欢它们在模型中看起来的样子。我该怎么办?
答案 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);
}