我在app delegate中修改了我的导航栏:
NSDictionary *settings = @{
UITextAttributeFont : [UIFont fontWithName:@"impact" size:36.0],
UITextAttributeTextColor : [UIColor whiteColor],
UITextAttributeTextShadowColor : [UIColor clearColor],
UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero]};
[[UINavigationBar appearance] setTitleTextAttributes:settings];
但是对于较大的字体,字体会像这样减少。 :
我尝试在我的VC的viewWillAppear中执行此操作:
UIView *newTitleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[newTitleView setBackgroundColor:[UIColor blackColor]];
[self.navigationController.navigationBar addSubview:newTitleView];
然后我要将标题与中心对齐。但这似乎并不合适。我唯一需要的是删除标题标签顶部和底部的边距。我该怎么做呢。
答案 0 :(得分:3)
尝试此代码,不要设置setTitleTextAttributes
UILabel *titleView = (UILabel *)self.navigationItem.titleView;
if (!titleView) {
titleView = [[UILabel alloc] initWithFrame:CGRectZero];
titleView.backgroundColor = [UIColor clearColor];
titleView.font = [UIFont boldSystemFontOfSize:20.0];
titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
titleView.textColor = [UIColor yellowColor]; // Change to desired color
self.navigationController.navigationItem.titleView = titleView;
[titleView release];
}
titleView.text = title;
[titleView sizeToFit];
答案 1 :(得分:2)
我建议最简单的方法是使用UIView标签和按钮为需求定制并使用它,而不是导航栏。 mnavigation bar height定制是高度修复的麻烦,也可能影响子视图。所以我建议使用UIView子类化的自定义标题视图
答案 2 :(得分:1)
您可以继承UILabel
并覆盖drawTextInRect
:像这样:
- (void)drawTextInRect:(CGRect)rect {
UIEdgeInsets insets = {0, 5, 0, 5};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
您可以找到更有用的链接 here