【问题标题】:NavigationBar's title showing only the half-topNavigationBar 的标题仅显示半顶
【发布时间】:2013-04-18 07:10:27
【问题描述】:

长话短说,这就是我得到的:

http://img839.imageshack.us/img839/9461/capturedcran20130418000x.png

这是我的 AppDelegate 中的一些代码:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"main_bar.png"] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  //[UIColor colorWithRed:125.0/255.0 green:111.0/255.0 blue:100.0/255.0 alpha:1.0],
  //UITextAttributeTextColor,
  //[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],
  //UITextAttributeTextShadowColor,
  //[NSValue valueWithUIOffset:UIOffsetMake(0, 0)],
  //UITextAttributeTextShadowOffset,
  [UIFont fontWithName:@"Pacifico" size:25],
  UITextAttributeFont,
  nil]];
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-10 forBarMetrics:UIBarMetricsDefault];

可能是什么问题?

【问题讨论】:

  • 如果 Pacifico 是自定义字体,问题是 iOS 没有将它正确地居中在 y 轴上,这将导致它被截断,请参阅我关于主题 here 的帖子
  • 标签看起来更像是被剪掉了。所以我的方法是创建一个 UILabel,使其大小与导航栏大小一样大,将默认标题设置为 nil,然后将标签添加到导航栏。
  • 是的 Pacifico 是一种自定义字体。我应该使用什么方法? (我总是得到同样的错误:无法识别的选择器发送到实例......)
  • 问题是我必须根据用户的选择放置动态标题...您的解决方案似乎不可能@pmk
  • 我可以看到你在导航栏添加文本时的代码吗?

标签: ios objective-c navigationbar


【解决方案1】:

我也遇到过类似的问题,我用这样的方法解决了:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = @"Home";
        self.tabBarItem.image = [UIImage imageNamed:@"main_bar.png"];
        CGRect frame = CGRectMake(0, 0, 400, 44);
        UILabel *label = [[UILabel alloc] initWithFrame:frame];
        label.backgroundColor = [UIColor clearColor];
        label.font = [UIFont boldSystemFontOfSize:20.0];
        label.shadowColor = [UIFont fontWithName:@"Pacifico" size:25];
        label.textAlignment = UITextAlignmentCenter;
        label.textColor = [UIColor whiteColor];
        self.navigationItem.titleView = label;
        label.text = NSLocalizedString(@"Remindbox", @"");
    }
    return self;
}

您需要稍微调整一下才能使其与您的字体一起使用。希望对您有所帮助。

【讨论】:

  • 任何时候,很高兴我能提供帮助。动态更改它不是问题。您可以将它放在另一个方法中并创建一个在 segue 之前设置的属性。或者您可以覆盖“initWithNibName”并添加一个 NSString 并使用它来设置标题。
猜你喜欢
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
相关资源
最近更新 更多