Google 登录 SDK 2.0.1 中对 GIDSignInButton 的约束冲突

Conflicting constraints on GIDSignInButton in Google Sign-In SDK 2.0.1

我正在尝试从 Google 登录 SDK 1.0.0 升级到 2.0.1 并且 运行 在尝试定位 [=14= 的实例时遇到一些冲突的约束].

似乎 GIDSignInButton 可能会定义自己的动态约束,这与我在 Interface Builder 中设置的约束冲突。我无法验证这一点,因为 SDK 是闭源的。

约束警告实际上可以用 Google 自己在 https://github.com/googlesamples/google-services/tree/81c831d85a67157746009fa2df81a683f860d21e/ios/signin 上的示例代码重现。

是否有解决此按钮定位的方法,或者这只是 SDK 2.0.1 中的一个错误?


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) 
(
    "<NSLayoutConstraint:0x7f9e0064b650 V:[UIView:0x7f9e0064b360(198)]>",
    "<NSLayoutConstraint:0x7f9e0064b830 UIView:0x7f9e0064b360.centerY == GIDSignInButton.centerY   (Names: GIDSignInButton:0x7f9e0046f000 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x7f9e006603c0 h=--& v=--& GIDSignInButton.midY == + 97   (Names: GIDSignInButton:0x7f9e0046f000 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f9e0064b830 UIView:0x7f9e0064b360.centerY == GIDSignInButton.centerY   (Names: GIDSignInButton:0x7f9e0046f000 )>

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

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) 
(
    "<NSLayoutConstraint:0x7f9e00476cd0 GIDSignInButton.width == 3.26531*GIDSignInButton.height   (Names: GIDSignInButton:0x7f9e0046f000 )>",
    "<NSLayoutConstraint:0x7f9e00476f20 H:[GIDSignInButton(160)]   (Names: GIDSignInButton:0x7f9e0046f000 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x7f9e00660410 h=--& v=--& V:[GIDSignInButton(44)]   (Names: GIDSignInButton:0x7f9e0046f000 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f9e00476cd0 GIDSignInButton.width == 3.26531*GIDSignInButton.height   (Names: GIDSignInButton:0x7f9e0046f000 )>

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

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) 
(
    "<NSLayoutConstraint:0x7f9e0064b7e0 UIView:0x7f9e0064b360.centerX == GIDSignInButton.centerX   (Names: GIDSignInButton:0x7f9e0046f000 )>",
    "<NSLayoutConstraint:0x7f9e00657480 H:[UIView:0x7f9e0064b360]-(0)-|   (Names: '|':UIView:0x7f9e0064b050 )>",
    "<NSLayoutConstraint:0x7f9e006574d0 H:|-(0)-[UIView:0x7f9e0064b360]   (Names: '|':UIView:0x7f9e0064b050 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x7f9e0065dda0 h=--& v=--& GIDSignInButton.midX == + 207   (Names: GIDSignInButton:0x7f9e0046f000 )>",
    "<NSLayoutConstraint:0x7f9e0046d5e0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7f9e0064b050(375)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7f9e0064b7e0 UIView:0x7f9e0064b360.centerX == GIDSignInButton.centerX   (Names: GIDSignInButton:0x7f9e0046f000 )>

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

我遇到了同样的问题,我找到的解决方案是在另一个视图中嵌入 google 登录按钮并在容器上设置约束。 我给 GIDSignInButton 实例的唯一约束是容器中的中心 (x,y),否则它仍将向右移动。

希望对您有所帮助

Google 已在 Google 登录 SDK 2.1.0(2015 年 6 月 17 日发布)中修复此错误。

Fixes Auto Layout issues with GIDSignInButton.