実際にそれを可能にするために私が費やした長さは信じられないでしょう。これは iOS のストック機能ではなく、viewController をプッシュ/ポップするアニメーションが非常にスムーズであるのに、tintColor の遷移が見苦しく見えることに、私は最後まで悩まされました。
いつフェードするかをチェックするコードはたくさんあります。私は PSPDFNavigationAppearanceSnapshot というクラスを書いて、ポップされたときにナビゲーションの状態を保持しています。(素晴らしいNimbusKitからそのアイデアを得ました)
実際のアニメーションはとても簡単です:
[self.navigationController.navigationBar.layer addAnimation:PSPDFFadeTransition() forKey:nil];
CATransition *PSPDFFadeTransition(void) {
return PSPDFFadeTransitionWithDuration(0.25f);
}
CATransition *PSPDFFadeTransitionWithDuration(CGFloat duration) {
CATransition *transition = [CATransition animation];
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
transition.duration = duration;
return transition;
}
そのコードをさらにコンパクトにすることができます。これは私の iOS PDF ライブラリ PSPDFKit から抜粋したもので、さまざまな場所でフェードを使用しているため、ヘルパー機能を使用しています。