2010-01-18 20 views
0

Je suis en train de créer une application avec des capacités de visualisation d'images. J'ai lutté la bête UIScrollView à la terre (l'espoir d'afficher ma connaissance de scrollview RSN) et essaye maintenant de reproduire certains des autres effets visuels de l'application de photos d'iPhone. En particulier, lors de la visualisation d'une image, je voudrais dissoudre les contrôles et les barres.Comment puis-je dupliquer une animation à partir de l'application Photos de l'iPhone

J'ai une méthode qui permet de basculer la visibilité de la barre d'état, de la barre de navigation et de la barre d'onglets, en laissant juste le scrollview avec une image. La scrollview est en plein écran. J'ai une minuterie qui se déclenche 3 secondes après que l'utilisateur fasse quelque chose (un seul tape sur l'écran, visualise l'image suivante, etc.) et dans la méthode timerFired, j'appelle ma méthode pour éteindre les barres. une seule pression sur l'écran active les barres. voici la méthode pour basculer l'état plein écran.

- (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]; 
    } 
} 

Cela fonctionne fondamentalement, MAIS, il ne semble pas aussi bon que l'application photos. J'anime les valeurs alpha car je crois que cela ressemble plus à l'application des photos au lieu de l'utilisation des méthodes d'animation cachées. Mon problème est de faire la même chose pour la barre d'état.

mes questions: (1) existe-t-il un UIView pour la barre d'état? (2) existe-t-il un moyen de modifier la propriété alpha de la barre d'état? (3) est la barre d'état dans une autre UIWindow? (4) existe-t-il un autre moyen d'y parvenir en utilisant des méthodes "légales" (j'ai besoin de mettre cette application dans l'app store)?

J'ai jeté la propriété windows de la UIApplication et il n'y avait qu'une seule fenêtre et j'ai rampé la hiérarchie de vue et il n'y avait pas une vue évidente pour la barre d'état.

des idées?

+0

Je ne peux pas vous aider avec le code d'animation, mais j'aimerais voir votre code UIScrollView. –

+0

S'il vous plaît partager votre code de vue de défilement lorsque vous avez une chance. Beaucoup d'entre nous ont lutté pour émuler l'application de photos d'iphone avec peu de succès. – Jonah

Répondre

0

La barre d'état est créée par SpringBoard elle-même, elle est de classe SBStatusBar (dont IIRC hérite de UIWindow). Il n'est pas accessible aux applications de l'application.

+0

Si j'utilise une autre fenêtre dans mon application, cette fenêtre affichera-t-elle automatiquement la barre d'état? Est-ce que je peux utiliser deux fenêtres (une avec des barres et une sans), et utiliser l'animation pour faire la transition entre elles pour obtenir une dissolution plus douce sur les barres? – FingerTipFun

+0

N'utilisez jamais plusieurs UIWindows. Cela ne mène tout simplement pas à de bonnes choses. –

+0

merci pour l'info. – FingerTipFun