删除uinavigationbar标题边距

时间:2013-05-14 06:20:21

标签: ios uinavigationcontroller

我在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];

但是对于较大的字体,字体会像这样减少。 :

enter image description here

我尝试在我的VC的viewWillAppear中执行此操作:

 UIView *newTitleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[newTitleView setBackgroundColor:[UIColor blackColor]];
[self.navigationController.navigationBar addSubview:newTitleView];

然后我要将标题与中心对齐。但这似乎并不合适。我唯一需要的是删除标题标签顶部和底部的边距。我该怎么做呢。

3 个答案:

答案 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