Ios 弹出到非大半透明条时出现UINavigationBar大标题问题

Ios 弹出到非大半透明条时出现UINavigationBar大标题问题,ios,swift,uinavigationcontroller,uinavigationbar,ios-animations,Ios,Swift,Uinavigationcontroller,Uinavigationbar,Ios Animations,我正在为两个UIViewController实现UINavigationBar:假设ControllerA和ControllerB ControllerA具有半透明的UINavigationBar,背景色=.clear属性 ControllerB已启用属性和白色背景 我应该从控制器A->控制器B按下并弹出。这里是我在controllerA生命周期方法中实现的代码: 覆盖函数视图将出现(u动画:Bool){ 超级。视图将显示(动画) 如果可用(iOS 11.0,*){ navigationItem

我正在为两个UIViewController实现UINavigationBar:假设ControllerA和ControllerB

ControllerA具有半透明的UINavigationBar,背景色=.clear属性

ControllerB已启用属性和白色背景

我应该从控制器A->控制器B按下并弹出。这里是我在controllerA生命周期方法中实现的代码:

覆盖函数视图将出现(u动画:Bool){
超级。视图将显示(动画)
如果可用(iOS 11.0,*){
navigationItem.largeTitleDisplayMode=.never
}
navigationController?.navigationBar.isTranslucent=true
navigationController?.navigationBar.tintColor=.white
navigationController?.navigationBar.backgroundColor=UIColor.clear
navigationController?.navigationBar.setBackgroundImage(UIImage(),用于:。默认值)
navigationController?.navigationBar.shadowImage=UIImage()
navigationController?.navigationBar.barTintColor=.clear
navigationController?.navigationBar.titleTextAttributes=[
.font:FontFamily.SFProRounded.bold.font(大小:18),
.foregroundColor:UIColor.white
]
}
覆盖函数视图将消失(u动画:Bool){
超级。视图将消失(动画)
如果可用(iOS 11.0,*){
navigationController?.navigationBar.prefersLargeTitles=true
navigationItem.LarGetTitleDisplayMode=.always
navigationController?.navigationBar.largeTitleTextAttributes=[
.font:FontFamily.SFProRounded.bold.font(大小:22),
.foregroundColor:UIColor.black
]
}
navigationController?.navigationBar.titleTextAttributes=[
.font:FontFamily.SFProRounded.bold.font(大小:18),
.foregroundColor:UIColor.black
]
navigationController?.navigationBar.tintColor=.black
navigationController?.navigationBar.backgroundColor=UIColor.white
navigationController?.view.backgroundColor=UIColor.white
navigationController?.navigationBar.barTintColor=.white
}
以下是我在不同iOS版本上遇到的问题:

  • 版本
  • 点击“后退”按钮解除控制器时,动画和标题颜色不正确。视频在此:

  • 版本==iOS 13
  • 在pop动画期间,大标题不随关闭的控制器移动。视频在此:

    如何解决?提前谢谢你

    最后我加上

    if#可用(iOS 11.0,*){
    navigationItem.LarGetTitleDisplayMode=.always
    }
    
    控制器B的视图中加载

    if#可用(iOS 11.0,*){
    navigationItem.largeTitleDisplayMode=.never
    }
    
    控制器的视图加载 正如我所预料的那样


    请注意,您只需设置一次PrefersTargetLes,最好是在B类中打开应用程序时设置override ViewWillInviser(),然后再次在此设置普通导航栏。它有助于解决不正确的动画。它无法解决问题我之前也遇到过同样的问题,但我做了上述更改并解决了问题。我尝试过,但不幸的是,它没有帮助。。看起来我在两个UINavigationBar状态之间进行了完全错误的转换。您可以尝试在
    ControllerB
    中使用override
    ViewWillEnglish
    ,并将
    ControllerA
    的导航更改设置回原处。从
    视图中删除导航设置将出现
    ,并将其设置为
    viewDidLoad