V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aria955
V2EX  ›  iOS

xcode 报错,有老哥看看这是怎么回事吗?

  •  
  •   aria955 · 2019-07-09 09:49:59 +08:00 · 4928 次点击
    这是一个创建于 1963 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Will attempt to recover by breaking constraint <NSLayoutConstraint:0x280764780 H:[_UIModernBarButton:0x143dae800]-(>=5)-| (active, names: '|':_UIButtonBarButton:0x143dae1b0 )>

    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-07-09 09:42:56.139575+0800 imatrixh5app[1006:633541] [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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) ( "<NSAutoresizingMaskLayoutConstraint:0x280764960 h=-&- v=-&- _UIToolbarContentView:0x143d4f810.width == UIToolbar:0x143d4f3d0.width (active)>", "<NSLayoutConstraint:0x28075b200 H:|-(0)-[_UIButtonBarStackView:0x143d50bd0] (active, names: '|':_UIToolbarContentView:0x143d4f810 )>", "<NSLayoutConstraint:0x28075bf70 _UIButtonBarStackView:0x143d50bd0.trailing == _UIToolbarContentView:0x143d4f810.trailing (active)>", "<NSLayoutConstraint:0x280766990 H:|-(8)-[_UIModernBarButton:0x143daf8b0'Done'] (active, names: '|':_UIButtonBarButton:0x143daed20 )>", "<NSLayoutConstraint:0x280766350 H:[_UIModernBarButton:0x143daf8b0'Done']-(16)-| (active, names: '|':_UIButtonBarButton:0x143daed20 )>", "<NSLayoutConstraint:0x28077fc50 'UISV-canvas-connection' UILayoutGuide:0x281d4ea00'UIViewLayoutMarginsGuide'.leading == _UIButtonBarButton:0x143e68f40.leading (active)>", "<NSLayoutConstraint:0x28077fc00 'UISV-canvas-connection' UILayoutGuide:0x281d4ea00'UIViewLayoutMarginsGuide'.trailing == _UIButtonBarButton:0x143daed20.trailing (active)>", "<NSLayoutConstraint:0x280767b60 'UISV-spacing' H:[_UIButtonBarButton:0x143e68f40]-(0)-[UIView:0x143dadfd0] (active)>", "<NSLayoutConstraint:0x2807661c0 'UISV-spacing' H:[UIView:0x143dadfd0]-(0)-[_UIButtonBarButton:0x143dae1b0] (active)>", "<NSLayoutConstraint:0x280767cf0 'UISV-spacing' H:[_UIButtonBarButton:0x143dae1b0]-(0)-[UIView:0x143daeb40] (active)>", "<NSLayoutConstraint:0x280767e80 'UISV-spacing' H:[UIView:0x143daeb40]-(0)-[_UIButtonBarButton:0x143daed20] (active)>",

    "<NSLayoutConstraint:0x2807671b0 'UIView-Encapsulated-Layout-Width' UIToolbar:0x143d4f3d0.width == 0   (active)>",
    "<NSLayoutConstraint:0x2807597c0 'UIView-leftMargin-guide-constraint' H:|-(0)-[UILayoutGuide:0x281d4ea00'UIViewLayoutMarginsGuide'](LTR)   (active, names: '|':_UIButtonBarStackView:0x143d50bd0 )>",
    "<NSLayoutConstraint:0x28075b480 'UIView-rightMargin-guide-constraint' H:[UILayoutGuide:0x281d4ea00'UIViewLayoutMarginsGuide']-(0)-|(LTR)   (active, names: '|':_UIButtonBarStackView:0x143d50bd0 )>"
    

    )

    Will attempt to recover by breaking constraint <NSLayoutConstraint:0x280766350 H:[_UIModernBarButton:0x143daf8b0'Done']-(16)-| (active, names: '|':_UIButtonBarButton:0x143daed20 )>

    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-07-09 09:43:00.332944+0800 imatrixh5app[1006:633541] didDisconnectPeripheral 2019-07-09 09:43:17.569429+0800 imatrixh5app[1006:633541] didConnectPeripheral 2019-07-09 09:43:19.459614+0800 imatrixh5app[1006:633541] didDisconnectPeripheral

    7 条回复    2019-07-09 10:52:22 +08:00
    paullee
        1
    paullee  
       2019-07-09 09:54:17 +08:00
    这个是你加了 Alert Actionsheet 出来的吧,我查到的资料说是 iOS12.x 的 bug。。。
    paullee
        2
    paullee  
       2019-07-09 09:55:26 +08:00
    另外,我是业余选手,不具有参考性哈。
    jameskuk
        3
    jameskuk  
       2019-07-09 09:57:29 +08:00
    约束冲突了,自己查查自己的约束,口算一下
    aria955
        4
    aria955  
    OP
       2019-07-09 10:18:55 +08:00
    @paullee 我是用做的 hybirdAPP 用的 cordova 蓝牙插件 点击监测数据变化的时候就会报错
    @jameskuk 我去百度一下 真的不懂啥意思 不是 ios 纯前端
    arnoldxiao
        5
    arnoldxiao  
       2019-07-09 10:21:17 +08:00
    约束冲突,仔细核查
    vincentxue
        6
    vincentxue  
       2019-07-09 10:42:58 +08:00
    这就是约束冲突了。

    约束就是 Auto Layout 的约束,具体类是 NSLayoutConstraint。打开生成的 Xcode 工程,打个名叫 UIViewAlertForUnsatisfiableConstraints 的 symbolic 断点,怎么打可以谷歌一下。还有其他方法做调试,详见官方文档: https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/DebuggingTricksandTips.html

    具体来说,你是下面两个约束冲突了:

    "<NSLayoutConstraint:0x280766990 H:|-(8)-[_UIModernBarButton:0x143daf8b0'Done'] (active, names: '|':_UIButtonBarButton:0x143daed20 )>",
    "<NSLayoutConstraint:0x280766350 H:[_UIModernBarButton:0x143daf8b0'Done']-(16)-| (active, names: '|':_UIButtonBarButton:0x143daed20 )>",

    第一个你要求 Done button 在水平方向上与父视图左侧的间距是 8,第二条你要求 Done button 水平方向上距离父视图左侧的间距是 0。这肯定会冲突了。


    系统已经帮你去掉了第二条,你好好检查一下你的 layout 代码。

    另外这种布局叫做 VFL 语法,可以参见我以前的一篇博客。https://xuexuefeng.com/autolayout/
    paullee
        7
    paullee  
       2019-07-09 10:52:22 +08:00
    @aria955 嗯嗯,这个错误本质就是楼上大佬们提到的“约束冲突”,我看错误中包含“ UIViewAlertForUnsatisfiableConstraints ”,这个我前段时间遇到的是弹出 actionsheet (就是下边弹出的那种系统的带几个选项的空间)时,console 会提示这类型的约束错误。但是功能上又没影响,查了好多资料都说是 iOS 自己的 bug,我就没管了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5767 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 06:21 · PVG 14:21 · LAX 22:21 · JFK 01:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.