新手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]];}
我在这里做错了吗? 任何帮助都会很棒!!
答案 0 :(得分:3)
如果它是你的导航栏,你可以更改导航栏的高度 - 如果它只是一个独立的界面对象。
但是如果您使用的是UINavigationController,导航栏的高度实际上并不适合您。 UINavigationController执行视图布局,您无法真正改变它的作用。如果你明白我的意思,那就是使用这种内置结构的价格的一部分。
至于你的其他尝试,你可能在错误的时间做这些事。例如,在awakeFromNib
中谈论self.navigationController.navigationBar
毫无意义,因为当时可能nil
(您可以轻松查看日志记录)。这就是使用外观代理更好的原因。但是那时你正在那 ;您必须在application:didFinishLaunching...:
中使用外观代理,因为它仅影响该类型的 future 实例。
基本上作为一个新手你需要学习什么 Cocoa让你做什么和不做什么,什么时候是这个过程中正确的时刻。这是一个很大的框架。你和大猩猩在床上;你需要知道大猩猩什么时候想翻身让它翻身,否则你就会被压扁。随着你越来越熟悉它,你会变得更好。