[ios]在 UINavigationBar TitleView 中垂直居中标签

发布时间: 2017/3/23 22:35:52
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我没有运气垂直居中的标签我要加入到 TitleView UINavigationBar 。你可以看看它下面的样子。

Text not vertically aligned

这是我如何添加标签︰

UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.text = NSLocalizedString(@"activeSessionsTitle",@"");
titleLabel.font = [Util SETTING_NEO_HEADER_FONT];
titleLabel.textColor = [UIColor whiteColor];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.textAlignment = UITextAlignmentCenter;
titleLabel.shadowColor = [UIColor colorWithRed:0.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:0.25f];
titleLabel.shadowOffset = CGSizeMake(0.0f, -1.0f);
[titleLabel sizeToFit];

super.navigationItem.titleView = titleLabel;

我认为它这样做的原因是,与实际的字体,我使用的 — — 有一些奇怪因为我不得不做大量的重新定位在按钮等。我已经能够解决问题无处不在但导航栏。

解决方法 1:

我最终使用的答案 RPM 左和组合之一的评论在我的问题。这是什么最终固定它对我来说︰

UIView *customTitleView = [[UIView alloc] init];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 3.0f, 200.0f, 30.0f)];
titleLabel.text = titleString;
titleLabel.font = [Util SETTING_NEO_HEADER_FONT];
titleLabel.textColor = [UIColor whiteColor];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.textAlignment = UITextAlignmentCenter;
titleLabel.shadowColor = [UIColor colorWithRed:0.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:0.25f];
titleLabel.shadowOffset = CGSizeMake(0.0f, -1.0f);
[titleLabel sizeToFit];

customTitleView.frame = CGRectMake(self.navigationItem.titleView.frame.size.width/2 - titleLabel.frame.size.width/2, self.navigationItem.titleView.frame.size.height/2 - titleLabel.frame.size.height/2, titleLabel.frame.size.width, titleLabel.frame.size.height);

[customTitleView addSubview:titleLabel];
[titleLabel release];

[self.navigationItem setTitleView:customTitleView];
[customTitleView release];

如果你使用这段代码,你可能不得不玩上标题标签 initWithFrame 的"y"值︰ 调用。我把它设置为 3.0f,但你可能必须要调整它有点为您自己的使用情况。

其他的解决办法似乎并不为我工作的原因是他们会偏离中心水平取决于如果我有一个按钮 (左或右)。要是没有栏按钮是很好,和如果有两个 it 很好。但一个将会导致该去偏离中心。

赞助商