【问题标题】:Why are there left/right gaps when I add an image to my navigationBar?为什么向导航栏添加图像时会出现左/右间隙?
【发布时间】:2010-02-24 15:10:12
【问题描述】:
UIImageView *navBarImageView = [[UIImageView alloc] initWithImage:navBarImage];
[navBarImageView setFrame:CGRectMake(0, 0, 320, 44)];
self.navigationItem.titleView = navBarImageView;
[navBarImageView release];

我正在尝试将图像添加到我的导航栏,但是当我使用上面列出的代码时,它将图像放入导航栏中,但在图像的左右两侧留下了灰色间隙。该图像是在 320x44 下创建的,尽管我正在设置框架,但我不确定它为什么要调整它的大小。

【问题讨论】:

    标签: iphone uiimageview uiimage navbar navigationbar


    【解决方案1】:

    这...可能不是您想要的方式——这不是titleView 的用途。自定义导航栏背景的常用方法是在UINavigationBar 上创建一个类别,如下所示:

     @implementation UINavigationBar(MyCustomBackground)
     - (void)drawRect:(CGRect)r
     {
          [[UIImage imageNamed:@"my-navigation-background.png"] drawInRect:self.bounds];
     }
     @end
    

    将其放入项目的 .m 文件中,您应该会看到所有导航栏都使用“my-navigation-background.png”作为背景。

    【讨论】:

    • 好吧,我真的不希望它适用于所有导航栏。我有一个不同的子屏幕导航栏。我可以按屏幕指定吗?
    • 当然。将条形的tag 属性设置为您要使用的每个不同图像的唯一值,然后检查类别的-drawRect: 中的self.tag 并绘制适当的图像。
    • 它工作正常。唯一的问题是当我回到第一个屏幕时,它似乎保留了子屏幕上的标签并显示子屏幕导航栏。
    • 是的,它可能只有在您创建子控制器时才会设置。毕竟,导航栏从一个视图到另一个视图仍然存在。在-viewWillAppear:(来自两个控制器)中设置标签,然后在栏上调用-setNeedsDisplay,您可能会得到更好的结果。
    • 我知道了 - 我错误地调用了 viewDidAppear,没有 :(BOOL)animated 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2020-08-10
    • 2015-01-30
    相关资源
    最近更新 更多