在导航栏中使用提示时自动布局警告

Leo*_*ien 4 uinavigationbar ios autolayout swift

我正在使用带有提示的导航栏,如下所示: 在此处输入图片说明

我在控制台中收到以下自动布局警告:

2019-09-01 21:26:03.225576+0200 Hortus[85622:2386450] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. 
Try this: 
    (1) look at each constraint and try to figure out which you don't expect; 
    (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x600002d16990 UILabel:0x7fc9eb816f50'Testen'.centerX == _UINavigationBarModernPromptView:0x7fc9ebe27780.centerX   (active)>",
    "<NSLayoutConstraint:0x600002d15c20 UILabel:0x7fc9eb816f50'Testen'.leading >= UILayoutGuide:0x6000037571e0'UIViewLayoutMarginsGuide'.leading   (active)>",
    "<NSLayoutConstraint:0x600002d10ff0 '_UITemporaryLayoutWidth' _UINavigationBarModernPromptView:0x7fc9ebe27780.width == 0   (active)>",
    "<NSLayoutConstraint:0x600002d16a30 'UIView-leftMargin-guide-constraint' H:|-(8)-[UILayoutGuide:0x6000037571e0'UIViewLayoutMarginsGuide'](LTR)   (active, names: '|':_UINavigationBarModernPromptView:0x7fc9ebe27780 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x600002d15c20 UILabel:0x7fc9eb816f50'Testen'.leading >= UILayoutGuide:0x6000037571e0'UIViewLayoutMarginsGuide'.leading   (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.

2019-09-01 21:26:03.226198+0200 Hortus[85622:2386450] [LayoutConstraints]     Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. 
Try this: 
    (1) look at each constraint and try to figure out which you don't expect; 
    (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x600002d16990 UILabel:0x7fc9eb816f50'Testen'.centerX == _UINavigationBarModernPromptView:0x7fc9ebe27780.centerX   (active)>",
    "<NSLayoutConstraint:0x600002d15540 UILabel:0x7fc9eb816f50'Testen'.trailing <= UILayoutGuide:0x6000037571e0'UIViewLayoutMarginsGuide'.trailing   (active)>",
    "<NSLayoutConstraint:0x600002d10ff0 '_UITemporaryLayoutWidth' _UINavigationBarModernPromptView:0x7fc9ebe27780.width == 0   (active)>",
    "<NSLayoutConstraint:0x600002d14320 'UIView-rightMargin-guide-constraint' H:[UILayoutGuide:0x6000037571e0'UIViewLayoutMarginsGuide']-(8)-|(LTR)   (active, names: '|':_UINavigationBarModernPromptView:0x7fc9ebe27780 )>"

    "<NSAutoresizingMaskLayoutConstraint:0x60000043be30 h=--& v=--& _UINavigationBarModernPromptView:0x7fb3c6416640.width == 0   (active)>",
    "<NSLayoutConstraint:0x600000421400 UILabel:0x7fb3c66d8bf0'Plant guide'.centerX == _UINavigationBarModernPromptView:0x7fb3c6416640.centerX   (active)>",
    "<NSLayoutConstraint:0x600000421f90 UILabel:0x7fb3c66d8bf0'Plant guide'.trailing <= UILayoutGuide:0x600001e58fc0'UIViewLayoutMarginsGuide'.trailing   (active)>",
    "<NSLayoutConstraint:0x600000421e00 'UIView-rightMargin-guide-constraint' H:[UILayoutGuide:0x600001e58fc0'UIViewLayoutMarginsGuide']-(20)-|(LTR)   (active, names: '|':_UINavigationBarModernPromptView:0x7fb3c6416640 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x600002d15540 UILabel:0x7fc9eb816f50'Testen'.trailing <= UILayoutGuide:0x6000037571e0'UIViewLayoutMarginsGuide'.trailing   (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
Run Code Online (Sandbox Code Playgroud)

这些警告是针对导航栏中的提示给出的,但我没有为导航栏设置自动布局约束。这应该由 IOS 自己处理。

我该怎么做才能解决这些警告?

[编辑] 转向视图控制器时,prepare() 中给出了警告。我在 prepare() 中设置了提示。转场是故事板参考,并被定义为“模态呈现”。故事板参考引用了一个 UINavigationController。提示设置在导航控制器的根视图控制器上。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if let identifier = segue.identifier {
        switch identifier {

        case "editImage":
            let nc = segue.destination as? TTImageNavigationController
            if let rvc = nc?.rootViewController as? TTImageEditorController {
                rvc.navigationItem.prompt = navigationItem.prompt
            }

        default:
            break
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

[编辑] 对于大多数做出反应的人来说,似乎这个问题并不清楚。再次...我没有在代码或故事板中设置任何自动布局设置。在segue之前的prepare()函数中设置了提示后,导航栏中出现了问题。上面给出了代码。任何说我必须更改或检查约束的反应都没有帮助,因为没有要检查的约束!

[编辑] 根据 Mohsen 的要求,我在 github 上创建了一个小示例项目:https : //bitbucket.org/Leontien/navigationbarautolayoutwarning/src/master/

mat*_*att 8

这不是你的错误。是苹果的bug。忽略控制台。向 Apple 提交报告并继续。