2013-10-02 36 views
24

當我試圖在iOS7中翻轉水平過渡時使用視圖控制器時,導航欄的起點在開始時爲(0,0)然後跳到(0,20)的正確位置。是否有可能使它在iOS6中表現得一樣?您可以下載項目here當模態iOS 7中的翻轉水平過渡的視圖控制器時導航欄的位置錯誤

我創建了一個定製的導航欄如下:

@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 

任何幫助將不勝感激。

+0

喜,難道ü解決這是上面提到的問題? – suvi

+0

可以告訴我如何解決iOS 7中的filp過渡嗎? – suvi

+0

@suvi plz檢查答案:) –

回答

57

我有同樣的問題與您聯繫。我認爲這是一個與UIKit的iOS上的7

我加一點點的代碼在viewWillAppear中方法上呈現

 [self.navigationController.navigationBar.layer removeAllAnimations]; 

當我關閉這個觀點,我添加了一個錯誤:

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

這爲我工作。希望這可以幫助你。

+1

非常感謝! –

+2

爲我節省了很多時間.. –

+2

這也適用於通過翻頁動畫呈現模態「UINavigationController」的segue。我用'UIViewAnimationOptionTransitionFlipFromRight'選項添加了'UIView'上面的prepareForSegue選項,它修復了我的其他問題。我將爲這個W/A樣本項目提交一個雷達。 –

3
+0

我試圖設置導航欄的「ios 6/7 Deltas」,但沒有幫助。你也嘗試過嗎? –

+0

是的,沒有人在這裏告訴你任何事情....... :) – virantporwal

+0

這些答案給了我一點,我已經解決了它,但未能解決問題。 –

4

而是黑客[navigationBar.layer removeAllAnimations];的,這樣的事情應該工作以及:

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

解決了這個問題,我認爲比接受的問題更好 –