2012-04-15 14 views
2

Ich habe eine App, wo Sie ein UIImageView antippen und die Tasten ausblenden und wieder reinkommen. Die Statusleiste macht das gleiche, außer es kommt nur zu schnell. Gibt es eine Möglichkeit, die Einblendung so anzupassen, dass sie mit dem Timing meiner Tasten übereinstimmt? Hier ist meine .m-Datei, wo der Code für die Schaltflächen und Statusleiste.UI Statusleiste Fade-In-Out Zeit iOS

.m

- (void)viewDidLoad 
{ 
////Loads UIImageView from URL 
todaysWallpaper.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.inkdryercreative.com/daily/archive/mondays/images/062-mondays-960x640-A.jpg"]]]; 

_buttonsVisible = false; 

[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 
    [todaysWallpaper addGestureRecognizer:tapGesture]; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
[super viewWillAppear:animated]; 

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
} 

- (void)imageTapped:(UIGestureRecognizer *)sender { 
float targetA = 0; 
if(_buttonsVisible == NO) { 
targetA =1.0; 
} else { 
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(imageTapped:) object:nil]; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleBlackTranslucent]; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 


} 

[UIView beginAnimations:@"MoveAndStrech" context:nil]; 
[UIView setAnimationDuration:1]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
homeButton.alpha = targetA; 
infoButton.alpha = targetA; 
saveButton.alpha = targetA; 
tweetButton.alpha = targetA; 
[UIView commitAnimations]; 
_buttonsVisible = !_buttonsVisible; 

if(_buttonsVisible) { 
[self performSelector:@selector(imageTapped:) withObject:nil afterDelay:100.0]; 
    [[UIApplication sharedApplication] setStatusBarHidden:NO ]; 

    [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleBlackTranslucent]; 
} 
} 

Jede Hilfe oder Anleitung wäre sehr dankbar. Mein Klient möchte dies bis Dienstag erledigen lassen oder jemand anders finden, der das macht. Ich habe mein Leben in diese App gesteckt, also bitte, wenn Sie das Wissen teilen können. Danke

+0

Ich glaube nicht, dass Sie es "verblassen" lassen können. Selbst die Fotos App hat nicht ** DAS ** – Sirens

Antwort

8

Sie könnten es in den Animationsblock einbinden. Verwenden Sie einfach die setStatusBarHidden: Methode statt setStatusBarHidden:withAnimation:

[UIView beginAnimations:@"foo" context:nil]; 
[UIView setAnimationDuration:1.0]; 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
[UIView commitAnimations]; 
+0

Das ist, was ich brauchte und es funktioniert. Danke – Gabriel

+0

+1, wusste nicht, dass Sie das in einem Animationsblock setzen können. Gibt es eine Liste von Dingen, die animiert werden können? – noRema

1

Was Sie tun könnten, ist Ihre eigene Navigationsleiste zu erstellen (verwenden Sie nicht UINavigationBar des UINavigationController) - Sie können dann anpassen und leicht animierbar Eigenschaften wie Alpha zuweisen.

3

Sie können dies versuchen, es ist die einzige Zeile Code für alle iOS-Geräte:

 
[[UIApplication sharedApplication] setStatusBarHidden:YES 
             withAnimation:UIStatusBarAnimationFade]; 

Hoffe, es hilft ..

+0

@Gabriel Sie können auch andere Animationen wie Slide ausprobieren. – Meet

3

Versuchen Sie, den Status Einstellung Bar mit dem folgenden Code:

 
[[UIApplication sharedApplication] setStatusBarHidden:YES 
             withAnimation:UIStatusBarAnimationFade]; 
Verwandte Themen