繁体   English   中英

UINavigationBar标题对齐问题

[英]Issue with UINavigationBar title alignment

我在导航控制器中更改标题的字体时遇到问题。

这是我的代码(来自我的UINavigationController的子类):

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSDictionary * attributes = @{UITextAttributeTextColor  :[UIColor whiteColor],
                                  UITextAttributeFont       :[UIFont fontWithName:@"Blanch" size:50],
                                  };
    self.navigationBar.titleTextAttributes  = attributes;
    CGFloat verticalOffset = -8;
    [[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault];

    UIImage *image = [UIImage imageNamed:NAVBAR_IMAGE];
    [self.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}

看起来是这样的:

在此处输入图片说明

如果我注释掉设置字体的行,这就是它的样子(与垂直偏移一样):

在此处输入图片说明

垂直偏移存在的唯一原因是我认为它可能已经解决了问题。 我不需要它,现在已将其注释掉,但是它不会更改输出-在NavBar上它看起来还是一样。

任何想法如何解决这个问题? 我认为自定义字体可能有很多行距,我想可能是问题所在。

我一直在试图找到一种方法来更改标题的原点/高度/基线对齐,但是看不到任何一种方法来执行这些操作。 任何想法如何解决这个问题?

创建一个容器UIView ,该容器的宽度与标签的宽度相同,并且与UINavigationBar高度相同(约46像素?)。 将此容器视图上的clipsToBounds设置为YES。 现在,将标签添加到此容器视图,并使该容器视图成为titleView。

设置ios5的Navigationbar图像

if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"YOUR_NAVIGATION_BAR_IMAGE"] forBarMetrics:UIBarMetricsDefault];
}

设置ios6的Navigationbar图像

if([[UINavigationBar appearance] respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"YOUR_NAVIGATION_BAR_IMAGE"] forBarMetrics:UIBarMetricsDefault];

然后,在标题上的导航栏中心创建标签。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM