2

我在应用程序委托中修改了导航栏,如下所示:

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

然后我打算将标题对齐到中心。但这似乎并不正确。我真正需要的只是删除标题标签顶部和底部的边距。我该怎么做。

4

3 回答 3

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];
于 2013-05-14T06:32:00.663 回答
2

那么我建议的最简单的方法是使用带有标签和按钮定制的 UIView 并使用它,而不是在导航栏上。导航栏高度自定义是高度固定的问题,子视图也可能会影响。所以我建议使用 UIView 子类的自定义标题视图

于 2013-05-14T06:24:21.430 回答
1

您可以继承UILabel和覆盖drawTextInRect: 像这样:

- (void)drawTextInRect:(CGRect)rect {
    UIEdgeInsets insets = {0, 5, 0, 5};
    return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}

有关更多有用的链接,您可以在 此处找到

于 2013-05-14T06:43:37.930 回答