我想从白色UINavigatinonBar
导航到透明UINavigationBar
。
在我的根视图控制器中,这是设置:
self.navigationController.navigationBar.hidden = NO;
[self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]];
[self.navigationController.navigationBar setTranslucent:NO];
保持非半透明非常重要。 这是第二个视图控制器中的设置:
// set title of navbar
self.title = [self.data objectForKey:@"title"];
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
//
// IMPORTANT PART: make the nav bar transaparent - no prerequisites.
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
// set custom back button
UIButton *backButton = [[UIButton alloc] initWithFrame: CGRectMake(16, 31, 22, 20)];
UIImage *backImage = [UIImage imageNamed:@"backButtonDetail"];
[backButton setBackgroundImage:backImage forState:UIControlStateNormal];
[backButton setTitle:@"" forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(popBack) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backButtonItem;
除了动画之外,这几乎很好:
如您所见,当我为其设置动画时,背景会变黑。我想将白色淡入目标颜色。它现在从黑色背景动画。
我尝试在导航栏下设置自定义UIView
,但这不起作用。
我现在很失落如何解决这个问题,任何帮助都会受到高度赞赏。
答案 0 :(得分:3)
我最近遇到了同样的问题,只需在appDelegate的didFinishLaunchingWithOptions
中设置窗口的背景颜色就可以解决这个问题。window.backgroundColor = UIColor.whiteColor()
如果您还没有对窗口的引用,那么
UIApplication.sharedApplication().delegate?.window.backgroundColor = ...
我发现这是最干净的解决方案。希望它有所帮助,虽然有点晚。