Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Ios 模态UINavigationController条高度错误_Ios_Swift_Ios13 - Fatal编程技术网

Ios 模态UINavigationController条高度错误

Ios 模态UINavigationController条高度错误,ios,swift,ios13,Ios,Swift,Ios13,注意:这与iOS 13中使用的新默认模式演示样式无关 我遇到了一个奇怪的问题,显示模式UINavigationController 考虑UIViewController中的UINavigationController: 当此代码在iOS 13.0上运行时: @IBAction func btntap(_ sender: Any) { let errorViewController = UIViewController() errorViewController.view.ba

注意:这与iOS 13中使用的新默认模式演示样式无关

我遇到了一个奇怪的问题,显示模式
UINavigationController

考虑
UIViewController
中的
UINavigationController

当此代码在iOS 13.0上运行时:

@IBAction func btntap(_ sender: Any) {

    let errorViewController = UIViewController()
    errorViewController.view.backgroundColor = .blue
    errorViewController.title = "Erro na solicitação"

    let errorNavigation = UINavigationController()

    errorNavigation.navigationBar.barTintColor = UIColor(red: 204/255, green: 0/255, blue: 0/255, alpha: 1.0)

    errorNavigation.navigationBar.tintColor = UIColor.white
    errorNavigation.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]

    errorNavigation.setViewControllers([errorViewController], animated: false)

    errorNavigation.modalPresentationStyle = .automatic

    self.present(errorNavigation, animated: true, completion: nil)
 }
发生这种情况:

第一次显示模式屏幕时,请注意错误的高度:

我想继续使用卡片式的演示文稿,但我需要在第一份演示文稿上解决这个错误的高度问题

当满足以下要求时,会发生这种情况:

  • 显示的
    UIViewController
    位于
    UINavigationController

  • 呈现的
    UIViewController
    标题上有特殊字符(“ç”、“ã”等)

  • 现在是动画真实

  • 已尝试了
    layoutifneed()
    的一些变体,但均无效


    我如何在第一个礼物上以正确的高度呈现它?

    只需将viewcontroller的标题替换为您自己的标签,就像这样。这是一个黑客解决方案,但始终有效,您将永远不必再考虑它。事实上,我从未调用ViewController的title属性,我只使用标签并将其设置为titleView,以便控制行数、字幕、对齐方式等

        let errorViewController = UIViewController()
        errorViewController.view.backgroundColor = .blue
    
        let errorNavigation = UINavigationController()
        let label = UILabel()
        label.text = "Erro na solicitação"
        label.textColor = .white
    
        errorViewController.navigationItem.titleView = label
    
        errorNavigation.navigationBar.barTintColor = UIColor(red: 204/255, green: 0/255, blue: 0/255, alpha: 1.0)
    
        errorNavigation.navigationBar.tintColor = UIColor.white
    
        errorNavigation.setViewControllers([errorViewController], animated: false)
    
        errorNavigation.modalPresentationStyle = .automatic
    
        self.present(errorNavigation, animated: true, completion: nil)
    

    哦,是的,请注意,字体大小应该在17-18左右,从中到粗体,以匹配ios默认系统中的viewController标题值。如果您希望匹配ios系统默认值,请参见

    抱歉,我搜索了很多,没有发现任何类似问题。问题在于第一个演示文稿上的导航栏高度,而不是演示文稿表单。如果标题有误导性,你能推荐一个更好的标题,这样我就可以编辑这个问题了吗?这可能没什么帮助,只能将
    let errorNavigation=UINavigationController()
    更改为
    let errorNavigation=UINavigationController(rootViewController:errorViewController)
    并删除该行
    errorNavigation.setViewControllers([errorViewController],动画:false)
    。不,同样的问题,但感谢您的尝试。您是否可以尝试从
    self.navigationController
    演示,而不仅仅是
    self
    ?我以前在从子控制器演示时看到过问题。这感觉有点麻烦,但解决了问题。我将使用它。非常感谢!