如何在NSScrollView中设置NSLayoutConstraint?

时间:2013-05-14 12:42:47

标签: macos cocoa autolayout nsscrollview nslayoutconstraint

我是NSLayoutConstraint的新手。

我想以编程方式管理NSScrollView的内容。最后,我想要做的是创建一个NSScrollView的子类,其方法- add:(NSView *)aViewaView添加到其他人之后,并放大documentView { {1}}如有必要。

(所有这些对于OSX)我猜它存在但找不到它,所以如果有人知道在哪里找到它,我就在;)这是一张可以帮助你理解的图片: enter image description here

我这样做的计划是使用NSScrollView。约束将是:

  • NSLayoutConstraintview 1
  • 之间的相等垂直空间
  • view 2高度应适应documentViewview 1等高度的总和。
  • view 2documentView以及最后view 1之间的一些固定垂直边距。
  • viewview 1等是右对齐的

所以,让我们来回答一下问题:我刚刚开始只添加view 2(其余部分后我会看到它)。我做了以下事情:

  • view 1是我的theScrollView;
  • NSScrollView是我要添加的视图;就图片而言,它是newSubview

    view 1

但是,它不起作用,theContainer = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 0, 0)] ; [theScrollView setDocumentView:theContainer] ; [newSubview setTranslatesAutoresizingMaskIntoConstraints:NO]; [theContainer addSubview:newSubview] ; NSLog(@"superview ? %@", [newSubview superview]) ; NSLog(@"view ? %@", newSubview) ; NSLog(@"NSScrollView ? %@", self) ; NSLog(@"NSScrollView content ? %@", self.contentView) ; NSArray * arrayOfConst1 ; arrayOfConst1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-50-[newSubview]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(newSubview)]; NSLog(@"First constraints : %@", arrayOfConst1) ; NSArray * arrayOfConst2 ; arrayOfConst2 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[newSubview]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(newSubview)]; NSLog(@"Second constraints : %@", arrayOfConst2) ; [newSubview removeConstraints:[newSubview constraints]] ; [theContainer removeConstraints:[theContainer constraints]] ; [theContainer addConstraints:arrayOfConst1] ; [theContainer addConstraints:arrayOfConst2] ; NSLog(@"Frame of theContainer : %@", NSStringFromRect(theContainer.frame)); 的框架仍为theContainer

我是(0,0,0,0)的新手;我错过了什么?

0 个答案:

没有答案