在导航栏中使用标题标签居中图像

Posted

技术标签:

【中文标题】在导航栏中使用标题标签居中图像【英文标题】:Centering image with Title Label in Navigation Bar 【发布时间】:2016-11-10 11:01:15 【问题描述】:

我正在向导航栏添加自定义标题标签和自定义图像。我可以在我想要的位置正确添加标题标签,但我无法将图像水平居中到该标签。我正在添加一个屏幕截图和我使用的可以提供帮助的代码。

-(void)addIconInNavBar

    CGSize imageSize = CGSizeMake(lblHeight, lblHeight);
    CGFloat marginX = (self.navigationController.navigationBar.frame.size.width) - (imageSize.width / 2);
    CGFloat marginY = (self.navigationController.navigationBar.frame.size.height / 2) - (imageSize.height / 2);

    imageView.frame = CGRectMake(marginX, marginY , imageSize.width, imageSize.height);
    [self.navigationController.navigationBar addSubview:imageView];
 

【问题讨论】:

【参考方案1】:

请将 centerX 更新为

CGFloat marginX = (self.navigationController.navigationBar.frame.size.width - imageSize.width) / 2;

或者

CGFloat marginX = (self.navigationController.navigationBar.frame.size.width/2) - (imageSize.width / 2);

【讨论】:

我想以自定义标题为中心,而不是以导航栏为中心。【参考方案2】:

我认为,更好的解决方案是使用custom view 作为导航栏的标题。

UIView* customViewWithImage = [self createCustomView];
self.navigationItem.titleView = customViewWithImage;

您可以从title attributes 属性中获取标题的属性,也可以从appearance 中获取此信息。

【讨论】:

【参考方案3】:

像这样使用它,

创建您的自定义视图并在您的自定义视图中添加标签和图像,并将此自定义视图添加为 titleView

UIView *vw = [[UIView alloc] initWithFrame:yourFrame];
UILabel *lbl = [[UILabel alloc] initWithFrame:lblFrame];
UIImageView *imgView = [[UIImageView alloc] initWithFrame:imgFrame];
[vw addSubView:lbl];
[vw addSubView:imgView];
self.navigationItem.titleView = vw;

【讨论】:

以上是关于在导航栏中使用标题标签居中图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使导航栏中的组件居中[重复]

导航栏中的徽标在 Internet Explorer 中未正确居中

Bootstrap 导航栏中的左侧徽标和居中标题

引导导航栏中的左,右和居中内容[重复]

如何在导航栏中垂直居中文本?

如何在 CSS 中将网站导航栏中的文本居中对齐?