2013-10-02 8 views
24

Kiedy próbuję modować kontroler widoku z przełączaniem w poziomie poziomym w iOS7, początkiem paska nawigacji jest (0, 0) na początku i następnie przeskocz do właściwej pozycji przy (0, 20). Czy w iOS6 można to zrobić tak samo? Możesz pobrać projekt here.Pasek nawigacyjny ma niewłaściwą pozycję, gdy modalny kontroler widoku z przerzucaniem w poziomie w systemie iOS 7

Stworzyłem dostosowany pasek nawigacyjny w następujący sposób:

@implementation MyCustomNavigationBar 

- (void)drawRect:(CGRect)rect { 
    [super drawRect:rect]; 
    UIImage *image = [UIImage imageNamed:@"Custom-Nav-Bar-BG.png"]; 


    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 

    if (IOSVersion <7) { 
    }else{ 
     self.translucent = NO; 
     self.tintColor = [UIColor whiteColor]; 
     self.barStyle = UIBarStyleDefault; 
     self.barTintColor = [UIColor redColor]; 

    } 
} 

@end 

Każda pomoc będzie mile widziane.

+0

Witam, Czy u rozwiązać ten problem, który jest wymieniony powyżej? – suvi

+0

czy możesz mi powiedzieć, jak rozwiązać przejście filp w iOS 7? – suvi

+0

@suvi plz sprawdź odpowiedź :) –

Odpowiedz

57

Mam ten sam problem z wami. Myślę, że jest to błąd z UIKit na iOS 7.

dodałem trochę kodu w metodzie viewWillAppear na prezentacji

 [self.navigationController.navigationBar.layer removeAllAnimations]; 

Kiedy odrzucić ten pogląd, dodałem:

-(IBAction)btnDonePressed:(id)sender { 
    [UIView transitionWithView:self.navigationController.view 
         duration:0.75 
         options:UIViewAnimationOptionTransitionFlipFromLeft 
        animations:nil 
        completion:nil]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

ten pracował dla mnie. Mam nadzieję, że to ci pomoże.

+1

Dziękuję bardzo! –

+2

zaoszczędziło wiele czasu dla mnie .. –

+2

To również działa na segue, który prezentuje modalne 'UINavigationController' za pomocą animacji flip. Dodałem przejście "UIView' powyżej z opcją' UIViewAnimationOptionTransitionFlipFromRight', aby przygotowaćForSegue i naprawić pozostałe problemy z tym błędem. Będę przesyłać radar do tego w/przykładowego projektu. –

3
+0

Próbowałem ustawić "ios 6/7 Deltas" paska nawigacji, ale bez pomocy. Czy próbowałeś też? –

+0

tak, nikt tu o tobie nic nie mówi ....... :) – virantporwal

+0

Te odpowiedzi dały mi pewną uwagę, a ja nad tym pracowałem, ale nie udało mi się rozwiązać problemu. –

4

Zamiast hacking [navigationBar.layer removeAllAnimations];, coś jak to powinno działać, a także:

[UIView transitionWithView:self.view.window duration:FlipDuration options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ 
    [UIView performWithoutAnimation:^{ 
     [self presentViewController:modalController animated:NO completion:nil]; 
    }]; 
} completion:nil]; 
+0

Rozwiązał problem, imho lepszą odpowiedź niż zaakceptowana –

Powiązane problemy