以编程方式添加约束消除了窗口大小调整

时间:2014-03-25 01:17:20

标签: objective-c xcode cocoa interface-builder autolayout

我有一个以编程方式创建的子视图。它主要用于在必要时处理选择并以其他方式传递响应者链。所以很自然地我想让它填满整个窗口,任何调整大小。所以我添加了一系列约束:

-(void)configureConstraintsForSubview:(NSView *)subview{
NSArray *constraints = [NSArray arrayWithObjects: //Creates constraints
                        [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:subview attribute:NSLayoutAttributeLeading multiplier:1 constant:0],
                        [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:subview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0],
                        [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:subview attribute:NSLayoutAttributeBottom multiplier:1 constant:0],
                        [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:subview attribute:NSLayoutAttributeTop multiplier:1 constant:0],
                        nil];
[self addConstraints:constraints];
}

但是,我不能让视图和窗口一起调整视图大小,而是根本不能调整窗口的大小! (缩放按钮甚至不做任何事情!)控制台说了一些关于无法满足我的约束的事情,它试图通过打破一个来恢复,但显然这不起作用。关于我的代码的一些注释:self是在Interface Builder中设置的PDFView子类,subview是表示我想要约束的子视图的参数/参数。我以前从未以编程方式做过限制,所以我觉得我可能会犯一些明显的错误。

更新:这是错误的相关部分:

2014-03-25 15:40:31.345 <MyAppName>[3097:303] Unable to simultaneously satisfy constraints:
(
    "<NSAutoresizingMaskLayoutConstraint:0x6100000991e0 h=--& v=--& V:[EGLInteractionView:0x6100001fe100]-(-1)-|   (Names: '|':EGLPDFView:0x60800014de10 )>",
    "<NSLayoutConstraint:0x6100000974d0 V:[EGLInteractionView:0x6100001fe100]-(0)-|   (Names: '|':EGLPDFView:0x60800014de10 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x6100000974d0 V:[EGLInteractionView:0x6100001fe100]-(0)-|   (Names: '|':EGLPDFView:0x60800014de10 )>

请注意,类名EGLPDFView在第一个片段中与self对应,而E​​GLInteractionView类与第一个片段中的子视图对应。

0 个答案:

没有答案