Como faço para duplicar a animação do aplicativo de fotos do iPhone
Pergunta
Estou construindo um aplicativo com recursos de visualização de imagens. Eu lutei com a besta do UIScrollView no chão (espero postar meu conhecimento do ScrollView RSN) e agora estou tentando duplicar alguns dos outros efeitos visuais do aplicativo de fotos do iPhone. Especificamente, ao visualizar uma imagem, eu gostaria de dissolver os controles e barra.
Eu tenho um método que alterna a visibilidade da barra de status, barra de navegação e barra de guias, deixando apenas o scrollView com uma imagem. O scrollView é uma tela cheia. Eu tenho um cronômetro que dispara 3 segundos depois que o usuário faz alguma coisa (explora a tela única, visualiza a próxima imagem, etc.) e, no método do timer, chamo meu método para desligar as barras. Uma única torneira da tela gira nas barras. Aqui está o método para alternar o estado de tela inteira.
- (void)setFullScreen:(BOOL)fullScreen {
// reset the timer
[myTimer invalidate];
[myTimer release];
myTimer = nil;
// start animation section
[UIView beginAnimations:nil context:nil];
// toggle the status bar
[[UIApplication sharedApplication] setStatusBarHidden:fullScreen animated:YES];
[UIView setAnimationDuration:UINavigationControllerHideShowBarDuration];
CGFloat alpha = fullScreen ? 0.0 : 1.0;
// change the alpha to either 0 or 1 based on hiding or showing the bars
self.navigationController.navigationBar.alpha = alpha;
self.tabBarController.tabBar.alpha = alpha;
// do the animations!
[UIView commitAnimations];
// restart the timer after we show the bars
if (!fullScreen) {
myTimer = [[NSTimer timerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO] retain];
[[NSRunLoop currentRunLoop] addTimer:myTimer forMode:NSDefaultRunLoopMode];
}
}
Isso basicamente funciona, mas não parece tão bom quanto o aplicativo de fotos. Estou animando os valores alfa, pois acredito que isso se parece mais com o aplicativo Fotos em vez de usar os métodos ocultos com animação disponíveis. Meu problema é fazer o mesmo para a barra de status.
Minhas perguntas: (1) Existe um uiview para a barra de status? (2) Existe uma maneira de alterar a propriedade Alpha da barra de status? (3) O statusbar está em outra UIWindow? (4) Existe outra maneira de conseguir isso usando métodos "legais" (preciso colocar este aplicativo na App Store)?
Eu larguei a propriedade Windows da UIApplication e havia apenas 1 janela e eu rastei a hierarquia de visualizações e não havia uma visão óbvia para a barra de status.
alguma ideia?
Solução
A barra de status é criada pelo próprio trampolim, é da classe sbstatusbar (que o IIRC herda da UIWindow). Não é acessível para aplicativos da App Store.