2016-09-23 8 views
-1

この問題は、Xcode 8に切り替えた後に発生します。 戻るボタンを押すと、ナビゲーションバーが前の色(黒色)で発生し、2秒後に通常に変わります。 GUIアップデートの遅延問題があります。Xcode 8ナビゲーションバー戻るアニメーションの問題

は、私が以前のナビゲーションバーを復元するには、このコードを使用します。

- (void)restorePreviousNavBarAppearance:(BOOL)animated { 
    if (_didSavePreviousStateOfNavBar) { 
     [self.navigationController setNavigationBarHidden:_previousNavBarHidden animated:animated]; 
     UINavigationBar *navBar = self.navigationController.navigationBar; 
     navBar.tintColor = _previousNavBarTintColor; 
     navBar.translucent = _previousNavBarTranslucent; 
     if ([UINavigationBar instancesRespondToSelector:@selector(barTintColor)]) { 
      navBar.barTintColor = _previousNavBarBarTintColor; 
     } 
     navBar.barStyle = _previousNavBarStyle; 
     if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) { 
      [navBar setBackgroundImage:_previousNavigationBarBackgroundImageDefault forBarMetrics:UIBarMetricsDefault]; 
      [navBar setBackgroundImage:_previousNavigationBarBackgroundImageLandscapePhone forBarMetrics:UIBarMetricsLandscapePhone]; 
     } 
     // Restore back button if we need to 
     if (_previousViewControllerBackButton) { 
      UIViewController *previousViewController = [self.navigationController topViewController]; // We've disappeared so previous is now top 
      previousViewController.navigationItem.backBarButtonItem = _previousViewControllerBackButton; 
      _previousViewControllerBackButton = nil; 
     } 
    } 
} 

enter image description here

enter image description here iOS版10では、UIKitには、更新された

答えて

0

UINavigationBar、UITabBarのための統一された背景管理、およびUIToolbar。特に、 背景のプロパティ(背景または影の背景または影の画像、またはバースタイルの設定など)を変更すると、 バーのレイアウトパスが開始され、新しい背景の外観が解決されることがあります。特に、layoutSubviewsの内部これらのバー の背景の外観を変更しようとし、この 手段は、 - [UIViewのupdateConstraints]、 viewWillLayoutSubviews、viewDidLayoutSubviews、updateViewConstraints、 またはレイアウトに応じて呼び出されている任意の他の方法が もたらし得ますレイアウトループ。

オブジェクト(UIImageや UIColorなど)が必要な場合に、 が常に同じオブジェクトインスタンスを使用するようにして、これらのレイアウトループを破ることができます。しかし、一般的にはこれを避けるべきです。

すべての外観パラメータが一度に解決されるため、バーの外観が変更された場合は が表示されることがあります。一般に、 バーをカスタマイズするためにできるだけ少ない値を指定することで最良の結果が得られます。たとえば、 のbarTintColor値を指定し、 backgroundImageプロパティに空のUIImageオブジェクトを指定している場合([UIImage new]を呼び出した場合など)、 のみを指定するとより良い結果が得られますbarTintColor。 iOS 9のこれらの問題を解決するために加えた変更は、iOS 9でも正常に動作するはずです( )。 バーの外観を示すサンプルプロジェクトとスクリーンショットのバグを報告してください。

iOS10でリリースノート:iOS 10.0 Release Note

関連する問題