我正在尝试为我的应用创建一个单元测试,用于检查导航栏的颜色,并将其与应用中为主题颜色保存的用户默认值进行比较。
我似乎无法找到一种方法来访问当前颜色的条形图。这甚至可能吗?
- (void) testColorThemeNavigationBar {
UINavigationBar *navigationBar = [[UINavigationBar alloc] init];
MSMColorManager *manager = [[MSMColorManager alloc]init];
navigationBar = [manager getNavBar];
UIColor *navBarColor = [[UIColor alloc]init];
UIColor *currentThemeColor = [[UIColor alloc] init];
navBarColor = navigationBar.barTintColor;
currentThemeColor = [manager themeColor];
XCTAssertEqualObjects(navBarColor, currentThemeColor);
}
现在我的测试失败说navBarColor的值为null,而我的currentThemeColor用正确的UIColorObject填充。我相信这是因为barTintColor方法仅用于设置颜色,而不是检索。
我也试过backgroundColor无济于事。
感谢。
答案 0 :(得分:1)
因为我在我的应用程序中使用了基于主题的设置,所以到目前为止我已经做了navigationBar
色调。
获取导航栏色调颜色
AppDelegate *objPCAppDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
NSLog(@"%@",[objPCAppDelegate.window rootViewController]);
UINavigationController *navController = (UINavigationController*)[objPCAppDelegate.window rootViewController];
NSLog(@"%@",navController.navigationBar.barTintColor);
不要创建UINavigationController
的新对象,只需从application.window
获取并在测试用例中使用它。
注意:如果您使用导航栏的默认颜色,它将始终返回nil
,因为默认导航栏没有颜色。
要获得颜色,您必须将自定义颜色设置为导航栏而不是&你可以在测试用例中得到它。