iOS导航栏高度

时间:2015-06-04 22:08:44

标签: ios objective-c

新手iOS开发人员,我试图找出为什么我的导航栏高度在我以编程方式更改后不会更改。我做了以下事情:

我在didFinishLaunchingWithOptions方法中将这段代码添加到AppDelegate.m

[[UINavigationBar appearance] setFrame:CGRectMake(0, 0, 320, 200)];

我被告知这会创建一个更大的导航栏,但它似乎并没有这样做。 我还在特定的视图控制器(FirstViewController.m)中添加了以下代码来更改字体系列,文本颜色等。

-(void)awakeFromNib {
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:(72/255.0) green:(167/255.0) blue:(192/255.0) alpha:1]];    
[self.navigationController.navigationBar setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIFont fontWithName:@"CaviarDreams" size:28], NSFontAttributeName,
  [UIColor whiteColor], NSForegroundColorAttributeName, nil]];}

我在这里做错了吗? 任何帮助都会很棒!!

1 个答案:

答案 0 :(得分:3)

如果它是你的导航栏,你可以更改导航栏的高度 - 如果它只是一个独立的界面对象。

但是如果您使用的是UINavigationController,导航栏的高度实际上并不适合您。 UINavigationController执行视图布局,您无法真正改变它的作用。如果你明白我的意思,那就是使用这种内置结构的价格的一部分。

至于你的其他尝试,你可能在错误的时间做这些事。例如,在awakeFromNib中谈论self.navigationController.navigationBar毫无意义,因为当时可能nil(您可以轻松查看日志记录)。这就是使用外观代理更好的原因。但是那时你正在 ;您必须在application:didFinishLaunching...:中使用外观代理,因为它仅影响该类型的 future 实例。

基本上作为一个新手你需要学习什么 Cocoa让你做什么和不做什么,什么时候是这个过程中正确的时刻。这是一个很大的框架。你和大猩猩在床上;你需要知道大猩猩什么时候想翻身让它翻身,否则你就会被压扁。随着你越来越熟悉它,你会变得更好。