Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS14 navigationItem.LarGetTitleDisplayMode=。始终不工作_Ios_Uinavigationcontroller_Uinavigationbar_Ios14 - Fatal编程技术网

iOS14 navigationItem.LarGetTitleDisplayMode=。始终不工作

iOS14 navigationItem.LarGetTitleDisplayMode=。始终不工作,ios,uinavigationcontroller,uinavigationbar,ios14,Ios,Uinavigationcontroller,Uinavigationbar,Ios14,我有一个ViewController和一个DetailViewController,在ViewController的viewdiload中我设置了以下代码,目的是使ViewController始终使用大标题 navigationItem.largeTitleDisplayMode = .never self.navigationController?.navigationBar.prefersLargeTitles=true navigationItem.LarGetTitleDisplayM

我有一个
ViewController
和一个
DetailViewController
,在
ViewController
viewdiload
中我设置了以下代码,目的是使
ViewController
始终使用大标题

navigationItem.largeTitleDisplayMode = .never
self.navigationController?.navigationBar.prefersLargeTitles=true
navigationItem.LarGetTitleDisplayMode=.always
DetailViewController
viewdiload
中,我设置了以下代码,目的是使
DetailViewController
不使用大标题

navigationItem.largeTitleDisplayMode = .never
当我从
DetailViewController
返回到
ViewController
时,会在
ViewController
中显示小标题而不是大标题。此代码在iOS12和iOS13中是正确的。如何使视图控制器在iOS14上始终显示大标题

当前正在从应用商店使用Xcode12使用我的扩展名:

extension UIViewController {
func configureNavigationBar(largeTitleColor: UIColor, backgoundColor: UIColor, tintColor: UIColor, title: String, preferredLargeTitle: Bool) {
if #available(iOS 13.0, *) {
    let navBarAppearance = UINavigationBarAppearance()
    navBarAppearance.configureWithOpaqueBackground()
    navBarAppearance.largeTitleTextAttributes = [.foregroundColor: largeTitleColor]
    navBarAppearance.titleTextAttributes = [.foregroundColor: largeTitleColor]
    navBarAppearance.backgroundColor = backgoundColor

    navigationController?.navigationBar.standardAppearance = navBarAppearance
    navigationController?.navigationBar.compactAppearance = navBarAppearance
    navigationController?.navigationBar.scrollEdgeAppearance = navBarAppearance

    navigationController?.navigationBar.prefersLargeTitles = preferredLargeTitle
    navigationController?.navigationBar.isTranslucent = false
    navigationController?.navigationBar.tintColor = tintColor
    navigationItem.title = title

} else {
    // Fallback on earlier versions
    navigationController?.navigationBar.barTintColor = backgoundColor
    navigationController?.navigationBar.tintColor = tintColor
    navigationController?.navigationBar.isTranslucent = false
    navigationItem.title = title
  }
 }
}
在视图中设置导航栏将显示:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    configureNavigationBar(largeTitleColor: .white, backgoundColor: .yourColor, tintColor: .white, title: "YourTitle", preferredLargeTitle: true)
}
现在,校准显示详图控制器的函数:

@objc func DetailController(){
    let controller = DetailViewController()
    controller.navigationItem.largeTitleDisplayMode = .never
    navigationController?.pushViewController(controller, animated: true)
}
结果是:


My
ViewController
有一个
UIPageViewController
UIPageViewController
有一个
UIScrollView
,这是关键点


在iOS 14的
ViewController
viewDidLoad
中添加
view.addSubview(UIView())
,需要添加sizeToFit函数。 下面的代码始终有效

navigationController?.navigationBar.prefersLargeTitles = true
navigationController?.navigationBar.sizeToFit()

终于解决了这个问题

当有机会解决这个问题时 如果您使用的是大标题,并且在同一视图控制器上有多个滚动视图。 导航栏将侦听UIScrollView类子视图上的滚动操作

解决方案 必须防止当前视图控制器的大标题折叠功能

它的概念与提到的@BaQiWL相同。但不仅仅是添加
view.addSubview(UIView())
就可以解决这个问题,如果您使用的是故事板的话

为此,必须添加视图作为Viewcontroller的第一个子视图。(
view.sendSubviewToBack
起作用)

或通过故事板:


谢谢,但仍然无法在Xcode12和iOS14上工作,您使用的是Xcode12和iOS14吗?是的,它工作正常。。。。看我的新图片回答你在用我的分机吗?删除你所有的导航栏设置,使用扩展,它就像一个魅力…非常感谢,我在一个新的项目中测试了你的代码,没有问题,应该是我的旧版本下的代码有问题project@BaQiWL祝你有愉快的一天:)这对我不起作用。我刚刚在VC-1的didload上打了电话,我也有同样的情况。但是添加子视图并没有解决我的问题。尝试添加到ViewCOntrollerA以及pageviewcontroller中的viewcontroller。