所以,我正在玩Xcode 6 beta中的大小类。我在图像上设置了一些约束,使其根据与iPhone纵向和横向相对应的尺寸等级处于不同的位置。
约束在下面的图像中可见。正如您所看到的,当我使用Compact / Compact时,会安装一些限制因素。而其他人则没有,而且在Compact / Regular中,安装了其他约束。
然而,我得到一个错误(在两个屏幕截图中略微可见)基本上声称我的卸载约束干扰了我安装的约束(如果它们同时运行,则为真)但不应该甚至不运行每个大小类的卸载约束?所安装的约束都不会导致彼此出现问题。
显示的错误是:
2014-06-30 21:14:26.215 TV Tracker[26417:1434692] SetAppThreadPriority: setpriority failed with error 45
2014-06-30 21:14:26.372 TV Tracker[26417:1434692] 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:0x10bb11da0 H:|-(24)-[UILabel:0x10bb4db70'TV Tracker uses your Trak...'] (Names: '|':UIControl:0x10bb2db60 )>",
"<NSLayoutConstraint:0x10bb11df0 H:[UIImageView:0x10bb44740]-(>=18)-[UILabel:0x10bb4db70'TV Tracker uses your Trak...']>",
"<NSLayoutConstraint:0x10bb2f420 H:|-(20)-[UIButton:0x10bb35470'Sign In'] (Names: '|':UIControl:0x10bb2db60 )>",
"<NSLayoutConstraint:0x10bb2f470 UIButton:0x10bb35470'Sign In'.leading == UIImageView:0x10bb44740.leading>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x10bb11df0 H:[UIImageView:0x10bb44740]-(>=18)-[UILabel:0x10bb4db70'TV Tracker uses your Trak...']>
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.
2014-06-30 21:14:26.373 TV Tracker[26417:1434692] 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:0x10bb11e90 H:[UILabel:0x10bb4db70'TV Tracker uses your Trak...']-(23)-| (Names: '|':UIControl:0x10bb2db60 )>",
"<NSLayoutConstraint:0x10bb11ee0 UILabel:0x10bb4db70'TV Tracker uses your Trak...'.trailing == UIButton:0x10bb44ec0'Register'.trailing>",
"<NSLayoutConstraint:0x10bb2f510 H:[UIButton:0x10bb44ec0'Register']-(20)-| (Names: '|':UIControl:0x10bb2db60 )>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x10bb11ee0 UILabel:0x10bb4db70'TV Tracker uses your Trak...'.trailing == UIButton:0x10bb44ec0'Register'.trailing>
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.
2014-06-30 21:14:26.388 TV Tracker[26417:1434692] 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:0x10bb49e10 h=-&- v=-&- UIControl:0x10bb2db60.width == UIViewControllerWrapperView:0x10d102000.width>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb55d10 h=-&- v=-&- UIViewControllerWrapperView:0x10d102000.width == UINavigationTransitionView:0x10bc6f770.width>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb3cda0 h=-&- v=-&- UINavigationTransitionView:0x10bc6f770.width == UILayoutContainerView:0x10bc6e3e0.width>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb29960 h=-&- v=-&- UILayoutContainerView:0x10bc6e3e0.width == UITransitionView:0x10bc73670.width>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb559e0 h=-&- v=-&- UITransitionView:0x10bc73670.width == UIWindow:0x10d068e70.width>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb56880 h=--- v=--- H:[UIWindow:0x10d068e70(320)]>",
"<NSLayoutConstraint:0x10bb2f420 H:|-(20)-[UIButton:0x10bb35470'Sign In'] (Names: '|':UIControl:0x10bb2db60 )>",
"<NSLayoutConstraint:0x10bb2f470 UIButton:0x10bb35470'Sign In'.leading == UIImageView:0x10bb44740.leading>",
"<NSLayoutConstraint:0x10bb44570 UIControl:0x10bb2db60.centerX == UIImageView:0x10bb44740.centerX>",
"<NSLayoutConstraint:0x10bb3c840 H:[UIImageView:0x10bb44740(92)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x10bb3c840 H:[UIImageView:0x10bb44740(92)]>
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.
2014-06-30 21:14:26.389 TV Tracker[26417:1434692] 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)
(
"<_UILayoutSupportConstraint:0x10bd1c8a0 V:[_UILayoutGuide:0x10bb4acb0(64)]>",
"<_UILayoutSupportConstraint:0x10bd1fbf0 V:|-(0)-[_UILayoutGuide:0x10bb4acb0] (Names: '|':UIControl:0x10bb2db60 )>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb56d40 h=-&- v=-&- UIControl:0x10bb2db60.height == UIViewControllerWrapperView:0x10d102000.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb56c60 h=-&- v=-&- UIViewControllerWrapperView:0x10d102000.height == UINavigationTransitionView:0x10bc6f770.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb3cbb0 h=-&- v=-&- UINavigationTransitionView:0x10bc6f770.height == UILayoutContainerView:0x10bc6e3e0.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb4a920 h=-&- v=-&- UILayoutContainerView:0x10bc6e3e0.height == UITransitionView:0x10bc73670.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb0e3a0 h=-&- v=-&- UITransitionView:0x10bc73670.height == UIWindow:0x10d068e70.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb44d20 h=--- v=--- V:[UIWindow:0x10d068e70(568)]>",
"<NSLayoutConstraint:0x10bb44520 UIControl:0x10bb2db60.centerY == UIImageView:0x10bb44740.centerY>",
"<NSLayoutConstraint:0x10bb445c0 V:[_UILayoutGuide:0x10bb4acb0]-(24)-[UIImageView:0x10bb44740]>",
"<NSLayoutConstraint:0x10bb49b60 V:[UIImageView:0x10bb44740(100)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x10bb49b60 V:[UIImageView:0x10bb44740(100)]>
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.
2014-06-30 21:14:26.396 TV Tracker[26417:1434692] 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)
(
"<_UILayoutSupportConstraint:0x10bd13470 V:[_UILayoutGuide:0x10bb4c690(0)]>",
"<_UILayoutSupportConstraint:0x10bd13410 _UILayoutGuide:0x10bb4c690.bottom == UIControl:0x10bb2db60.bottom>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb56d40 h=-&- v=-&- UIControl:0x10bb2db60.height == UIViewControllerWrapperView:0x10d102000.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb56c60 h=-&- v=-&- UIViewControllerWrapperView:0x10d102000.height == UINavigationTransitionView:0x10bc6f770.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb3cbb0 h=-&- v=-&- UINavigationTransitionView:0x10bc6f770.height == UILayoutContainerView:0x10bc6e3e0.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb4a920 h=-&- v=-&- UILayoutContainerView:0x10bc6e3e0.height == UITransitionView:0x10bc73670.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb0e3a0 h=-&- v=-&- UITransitionView:0x10bc73670.height == UIWindow:0x10d068e70.height>",
"<NSAutoresizingMaskLayoutConstraint:0x10bb44d20 h=--- v=--- V:[UIWindow:0x10d068e70(568)]>",
"<NSLayoutConstraint:0x10bb11e40 UIControl:0x10bb2db60.centerY == UILabel:0x10bb4db70'TV Tracker uses your Trak...'.centerY + 0.25>",
"<NSLayoutConstraint:0x10bb2f3d0 V:[UILabel:0x10bb4db70'TV Tracker uses your Trak...']-(91)-[_UILayoutGuide:0x10bb4c690]>",
"<NSLayoutConstraint:0x10bb2d790 V:[UILabel:0x10bb4db70'TV Tracker uses your Trak...'(69)]>"
)
Will attempt to recover by breaking constraint
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.
我对Compact / Compact约束的侧边栏看起来像
我对Compact / Regular约束的侧边栏看起来像
此登录控制器的视图层次结构:
答案 0 :(得分:7)
我第一次尝试这个功能时遇到了同样的问题,直到我意识到&#34; +&#34;按钮告诉我。起初,我更改了大小类并删除了视图并添加了视图,或删除了约束并添加了约束。那是错的!您不能在每个大小的类基础上删除或添加视图或约束;他们必须所有在每个尺寸类别 - 只有一些标记&#34;安装&#34;对于那个大小的班级,其他的不是。
这里有一些进一步的建议。
查看屏幕截图的顶部。您正在从Interface Builder获得警告 - 并忽略它们。不要忽视它们!这些警告告诉你,你的约束并没有按你认为的那样做。
显示画布左侧的视图层次结构列表(它隐藏在屏幕截图中)并继续查看并处理每个大小类组合,直到不再有警告。它还告诉您在大量情况下以及您正在查看的特定大小类情况中存在哪些约束和视图(请参见下面的屏幕截图)。
使用&#34; +&#34;右侧属性检查器中的按钮,以确保您具有每个相关大小类案例的值。您不添加或删除约束或类:添加&#34;已安装&#34;按钮并标记其大小等级并选中或取消选中它们(再次参见屏幕截图)。
最后,使用预览助手确保视图看起来与您期望的一样。看下面的可爱动画。
答案 1 :(得分:0)
例如,如果您可以注意到日志中的第一个警告 - (24) - [UILabel:0x10bb4db70&#39;电视跟踪器使用你的Trak ......&#39;] 它明确表示存在一个由您添加的约束不是必需的。 举个例子,如果您为任何对象添加了顶部空间和底部空间,则无需为该对象设置高度,因为该对象将根据您提供的顶部和底部空间进行扩展。 就像你的日志也一样,UILable不要求高度/宽度/ x / y等于24.请找到它并从故事板中删除以解决你的问题。