Macos 自动布局灵活的宽度
我有一个观点。在该视图中,我用代码生成了许多子视图。我希望每个子视图都延伸到封闭视图的宽度。我尝试在代码中添加约束,但遇到运行时异常Macos 自动布局灵活的宽度,macos,cocoa,autolayout,Macos,Cocoa,Autolayout,我有一个观点。在该视图中,我用代码生成了许多子视图。我希望每个子视图都延伸到封闭视图的宽度。我尝试在代码中添加约束,但遇到运行时异常 NSView *trackcontainer = [self trackContainerWithTrack:track]; [self addSubview:trackcontainer]; [trackcontainer addConstraints: [NSLayoutConstraint constraintsWithVis
NSView *trackcontainer = [self trackContainerWithTrack:track];
[self addSubview:trackcontainer];
[trackcontainer addConstraints: [NSLayoutConstraint
constraintsWithVisualFormat:@"|-5-[trackcontainer]-5-|"
options:0 metrics:nil
views:NSDictionaryOfVariableBindings(trackcontainer)]];
例外情况是:
2014-05-12 16:58:20.812 testApp[7597:303] Unable to install constraint on view.
Does the constraint reference something from outside the subtree of the view?
That's illegal. constraint:<NSLayoutConstraint:0x60000028e880 H:|-(5)-[BTSDoubleClickView:0x600000340fd0]
(Names: '|':BTSAlbumTracklistView:0x608000137c00 )> view:<BTSDoubleClickView: 0x600000340fd0>
2014-05-12 16:58:20.812 testApp[7597:303]无法在视图上安装约束。
约束是否引用了视图子树之外的内容?
那是违法的。约束:视图:
当然,这是在视野之外。我希望它引用superview,这就是我使用管道角色的原因
编辑:我刚刚意识到我应该将约束添加到superview,而不是子视图。我这样做了,但现在我得到了一个不同的错误:
2014-05-12 22:37:47.218 autolayouttest[29399:303] Unable to simultaneously satisfy constraints:
(
"<NSAutoresizingMaskLayoutConstraint:0x61800009e730 h=--& v=--& H:|-(10)-[NSView:0x60000013aa40] (Names: '|':FunkyView:0x60800013aa40 )>",
"<NSLayoutConstraint:0x60000009eaa0 H:|-(NSSpace(20))-[NSView:0x60000013aa40] (Names: '|':FunkyView:0x60800013aa40 )>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x60000009eaa0 H:|-(NSSpace(20))-[NSView:0x60000013aa40] (Names: '|':FunkyView:0x60800013aa40 )>
Set the NSUserDefault NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints to YES to have -[NSWindow visualizeConstraints:] automatically called when this happens. And/or, break on objc_exception_throw to catch this in the debugger.
2014-05-12 22:37:47.218自动布局测试[29399:303]无法同时满足约束:
(
"",
""
)
将尝试通过打破约束进行恢复
将NSUserDefault NSConstraintBasedLayoutVisualizationMutuallyExclusiveConstraints设置为YES,以便在发生这种情况时自动调用-[NSWindow VisualizationConstraints:]。和/或,在objc_异常_抛出时中断,以便在调试器中捕获该异常。
我知道存在冲突,可能是因为我在创建视图框架时指定了宽度/高度?我真的不知道该怎么办。我需要添加多少约束?我可以删除AutoresizingMaskLayoutConstraint吗?我在视图上没有任何自动调整大小的遮罩(我也尝试将其设置为0,以防万一,没有区别)。当使用自动布局代替自动调整大小的遮罩时,您需要在视图上调用
setTranslatesAutoResizengMaskintoConstraints:no