【问题标题】:UINavigationBar with a static image带有静态图像的 UINavigationBar
【发布时间】:2009-11-17 17:59:26
【问题描述】:

将图像添加到 UINavigationItem 的 titleView 非常简单,但是当我在堆栈上推送新视图时,它会动画 UINavigationItem 与 titleView 一起滑向左侧,并加载新的 UINavigationItem。

我可以想出很多方法来让图像保持不变,但它们看起来都很老套。有没有我找不到的正常方法?以下是将图像添加到我的视图控制器的 UINavigationItem 的代码:

UIImage *tImage = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"logo_topbar" ofType:@"png"]];
UIImageView *tImageView = [[UIImageView alloc] initWithImage:tImage];
self.navigationItem.titleView = tImageView;
[tImage release];
[tImageView release];

谢谢大家

【问题讨论】:

    标签: iphone objective-c cocoa-touch uikit


    【解决方案1】:

    我想您可以将整个视图嵌入到超级视图中,静态图像位于现有 UI 下方。然后,您可以使 UINavigationItems 中的标题透明,因此按钮将在图像上滑动,但图像将保持不变。

    【讨论】:

    • 这个解决方案听起来很有趣,但我不相信它是最好的方法。您是在谈论使除按钮之外的整个导航栏透明吗?然后基本上在它下面放一个bar + logo的截图?因为如果您只是将底层图像上的 UINavigationItem 设置为透明,那么它也会在转换期间移动,从而在底层徽标上产生更奇怪的窗口效果。
    • 我认为这有点含糊,但我会继续接受它,因为我认为这种方法的变体是没有完全自定义导航栏的唯一方法。为了避免奇怪的窗口,您可能至少必须对整个栏进行子类化并自己管理子元素的布局。
    【解决方案2】:

    您可以将相同的 titleView 添加到您希望它出现的所有 UIViewControllers 上,但是我猜想这会使 ImageView 动画化到左侧并从右侧进入一个新的相同视图。

    我看到的唯一方法是像这样添加 UIImageView:

    [self.navigationController.view addSubview:tImageView];
    

    或者试试这个

    [self.navigationController.navigationBar addSubview:tImageView];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多