NavigationItem Titleview 以 IOS 7 下的导航栏为中心 - 不可能?

Posted

技术标签:

【中文标题】NavigationItem Titleview 以 IOS 7 下的导航栏为中心 - 不可能?【英文标题】:NavigationItem Titleview centered on the navigationbar under IOS 7 - impossible? 【发布时间】:2013-12-11 08:54:46 【问题描述】:

我问的是通常的答案,修改 viewDidLayoutSubviews 中的框架不起作用 - 除非您在我的代码中发现错误。框架被设置为正确的宽度和高度,但 ios 7 不尊重框架。

目前,很久以前发布的应用程序看起来像这样,并且可以在 iOS 6 和 7 上运行: https://itunes.apple.com/se/app/eksjo/id435475192?mt=8

重新编译给出了这个: https://www.dropbox.com/s/pzyv2vhtlmlxkoe/Photo%202013-12-11%2009%2047%2030.png

-(void)viewWillAppear:(BOOL)animated 
    UIImageView *iv=[[UIImageView alloc] initWithFrame:r(320-102/2,0,102,44)];
    iv.image=[UIImage imageNamed:@"Eksjologo5bar.png"];
    self.navigationItem.titleView=iv;
    [iv release];


-(void)viewDidLayoutSubviews 
    CGRect frame=self.navigationItem.titleView.frame;
    frame.size.width=102;
    frame.size.height=44;
    self.navigationItem.titleView.frame=frame;

我想要做的就是在导航栏的中心放置一个徽标图像。我正在寻找 viewWillAppear 代码的最小代码更改来执行此操作,并且仍然与 iOS 6.x 兼容。

编辑:它也可能是 iOS 6 的问题,而不是 iOS 7 的问题。如果你能解释为什么应该像这个问题那样做,那就是我的问题的答案:My UINavigationitem's TitleView getting expanded in ios 6

【问题讨论】:

【参考方案1】:

这就是我的工作

 UIImageView *logoImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, desired_image_width, desired_image_height)];
 // if you need to resize the image to fit the UIImageView frame
 logoImage.contentMode = UIViewContentModeScaleAspectFit;
 // no extension name needed for image_name
 [logoImage setImage:[UIImage imageNamed:@"image_name"]];
 UIView *logoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, logoImage.frame.size.width, logoImage.frame.size.height)];
 [logoView addSubview:logoImage];
 self.navigationItem.titleView = logoView;

您可能会注意到我在设置navigationItem 的titleView 之前将UIImageView 实例添加到了UIView 实例中。您可以直接将 UIImageView 实例设置为 navigationItem 的 titleView,但是当您导航到下一页时徽标会偏离中心,并且您仍然希望使用后退按钮显示徽标。导航栏会自动把UIView放在中间,但是UIImageView(虽然UIImageView是UIView的子类,就是不知道为什么)。

【讨论】:

完美运行!谢谢

以上是关于NavigationItem Titleview 以 IOS 7 下的导航栏为中心 - 不可能?的主要内容,如果未能解决你的问题,请参考以下文章

在navigationItem中居中titleView

为 navigationItem.titleView layoutSubviews 获取正确的边界

如何设置navigationItem.titleView 图片水平居中?

当我向 navigationItem 添加更多按钮时,如何使我的 navigationItem.titleView 居中?

navigationItem.TitleView 在 iOS 10 上不起作用

如何设置navigationItem titleView的按钮?