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

发布于 2024-11-30 15:09:41 字数 584 浏览 1 评论 0原文

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

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];

有什么想法如何使背景颜色与导航栏颜色相匹配吗?

问题的屏幕截图

I used following code to add multiple buttons to the navigation controller

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

...

The problem is the background of the toolbar does not match 100% to the navigation bar. There is a small line showing at the top of the toolbar. The color is almost the same but if you look carefully you can see the rectangle …

I do following in the delegate to set the background of the navigation bar

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

any ideas how to get the background color to match the navigation bar color?

screen capture of the problem

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吖咩 2024-12-07 15:09:41

实现此目的的最佳方法是使工具栏完全透明。实现此目的的一种方法是子类化 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

The best way to make this work is to make the toolbar fully transparent. One way to do this is to subclass UIToolbar and override drawRect: to do nothing.

Here's my implementation of a UITransparentToolbar (note this assumes the toolbar will be created via a 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
空名 2024-12-07 15:09:41

根据这个答案,iOS 5 或更高版本似乎无需技巧即可支持此功能:

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

这对我有用!

Looks like iOS 5 or later supports this without a trick according to this answer:

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

And it worked for me!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文