【发布时间】:2014-04-17 14:24:23
【问题描述】:
我有一个 NSScrollView 的子类。在该滚动视图的文档视图中,我有几个 NSView。最后,我在 documentView 中添加了一个名为 aView 的 NSView。
只要不需要滚动,我希望 aView 位于 documentView 的底部。只能沿 y 轴滚动。
如果 documentView 对 contentView 来说太高 - 所以需要滚动 - 我希望 aView 显示在 contentView 的底部。
这适用于您在下面看到的代码。
这是我的问题: 当我开始滚动时,我希望 aView 停留在 contentView 的底部,但 aView 只是与 documentView 中的所有其他视图一起滚动。 换句话说:如果需要滚动,我希望 aView 的 位置固定在我的 scrollView 可见矩形的底部,如果 contentView 足够高以显示整个文档视图。
有没有办法做到这一点?我哪里错了?
这是我的子类 NSScrollView 中的代码:
[documentView addSubview:aView];
aView.translatesAutoresizingMaskIntoConstraints = NO;
NSLayoutConstraint *documentAViewBottom = [NSLayoutConstraint constraintWithItem:documentView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:aView attribute:NSLayoutAttributeBottom multiplier:1 constant:0];
documentAViewBottom.priority = NSLayoutPriorityDefaultHigh;
[documentView addConstraint:documentAViewBottom];
NSLayoutConstraint *aViewMaxYEdge = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:aView attribute:NSLayoutAttributeBottom multiplier:1 constant:5];
[self addConstraint:aViewMaxYEdge];
[documentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[aView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(aView)]];
【问题讨论】:
标签: objective-c macos cocoa autolayout nsscrollview