Можно ли заставить строку состояния исчезать / растворяться с помощью Core Animation? - PullRequest
0 голосов
/ 28 декабря 2011

Мне нужно, чтобы строка состояния исчезала, когда пользователь касался экрана, и мне интересно, возможно ли это с помощью Core Animation. Я установил строку состояния так:

[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent animated: YES];

Когда я использовал анимацию UIView и поместил [[UIApplication sharedApplication] setStatusBarHidden:NO]; в блок UIView animateWithDuration, он растворился. Однако, когда я использую базовую анимацию, она не работает:

[CATransaction begin];
CABasicAnimation *fader = [CABasicAnimation animationWithKeyPath:@"opacity"];
[fader setDuration:2.0];
[fader setFromValue:[NSNumber numberWithFloat:.75]];
[fader setToValue:[NSNumber numberWithFloat:0]];
[[[[self tabBarController] tabBar]layer]addAnimation: fader forKey:@"BigFade"];

CABasicAnimation *fader2 = [CABasicAnimation animationWithKeyPath:@"opacity"];
[fader2 setDuration:2.0];
[fader2 setFromValue:[NSNumber numberWithFloat:1]];
[fader2 setToValue:[NSNumber numberWithFloat:0]];
[[[[self navigationController] navigationBar]layer]addAnimation: fader2 forKey:@"BigFade2"];

[[UIApplication sharedApplication] setStatusBarHidden:YES];
[CATransaction commit];

Любые идеи о том, как сделать это в Core Animation (мне нужно использовать Core Animation вместо анимации UIView)?

1 Ответ

2 голосов
/ 28 декабря 2011

Вы объяснили, что не хотите использовать UIViewAnimation, но не говорите почему.Хотите иметь собственную анимацию затухания?Дает нам более подробную информацию о вашей мотивации.Что не так в вашем случае с использованием - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation?Вы можете передать константу UIStatusBarAnimationFade для второго аргумента, чтобы получить эффект затухания.

Проблема, с которой вы столкнетесь при желании сделать это по-другому, заключается в том, что нет официального способа доступа к представлению строки состояния.

Ничто в документации не говорит о том, что statusBar является частью navigationBar.Таким образом, ваш код [[self navigationController] navigationBar]layer] ... не будет иметь эффекта, на который вы надеетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...