将工具栏添加到导航控制器 - 颜色不匹配

时间:2011-08-19 20:10:47

标签: iphone uinavigationbar uitoolbar

我使用以下代码将多个按钮添加到导航控制器

UIToolbar* toolbar = [[UIToolbar alloc]
                      initWithFrame:CGRectMake(0, 0, 100, 44)];
toolbar.tintColor = [UIColor clearColor];
[toolbar setBarStyle: UIBarStyleBlackTranslucent];

...

问题是工具栏的背景与导航栏的100%不匹配。工具栏顶部显示一条小线。颜色几乎相同但如果仔细观察就可以看到矩形......

我在委托中执行以下操作来设置导航栏的背景

self.navigationController.navigationBar.tintColor =  [UIColor colorWithRed:.0 green:.0 blue:.0 alpha:.4];

如何获得与导航栏颜色相匹配的背景颜色?

screen capture of the problem

2 个答案:

答案 0 :(得分:0)

使这项工作的最佳方法是使工具栏完全透明。一种方法是将UIToolbar子类化并覆盖drawRect:什么都不做。

这是我对UITransparentToolbar的实现(请注意,这假设工具栏将通过xib创建。):

@implementation UITransparentToolbar

- (id)initWithCoder:(NSCoder *)decoder
{
    if ( self = [super initWithCoder:decoder] )
    {
        self.backgroundColor = [UIColor clearColor];
        self.opaque = NO;
        self.translucent = YES;

    }
    return self;
}

- (void)drawRect:(CGRect)rect 
{
}

- (void)dealloc 
{
    [super dealloc];
}

@end

答案 1 :(得分:0)

根据这个答案,看起来iOS 5或更高版本支持这一点:

https://stackoverflow.com/a/9109910/1179521

它对我有用!