很抱歉这是一个简单的问题,但代码如下:
[[UINavigationBar appearance] setBackgroundImage:[UIImage
imageNamed:@"backgroundNavigationBar.png"] forBarMetrics:UIBarMetricsDefault];
CGRect frame = [[UINavigationBar appearance] frame];
NSLog(@"%@", NSStringFromCGRect(frame));
UIView *view = [[UIView alloc] initWithFrame:frame];
[[UINavigationBar appearance] addSubview: view];
给了我
{{0, 0}, {0, 0}}
如何正确获取具有实际大小的当前导航栏的帧,即320x64?
答案 0 :(得分:1)
尝试:
CGRect frame = self.navigationController.navigationBar.frame;
答案 1 :(得分:0)
我担心你的代码会以你喜欢的方式工作:/
外观代理当然不是用于添加子视图!
您只能通过UIAppearance编辑标记为' UI_APPEARANCE_SELECTOR
'在头文件中!
编译器允许您编写代码,因为+ (instancetype)appearance
实际上返回了类的代理对象。
您要添加子视图的实际视图与该代理没有任何关系。 UIAppearance
查看代理对象,并在创建新视图时仅复制UI_APPEARANCE_SELECTOR
标记的属性。
和http://nshipster.com/uiappearance/
,它将为您提供有关如何使用UIAppearance
的精彩概述。