使用autoLayout在NSScrollView上方按钮

时间:2013-07-28 03:05:03

标签: cocoa nsview autolayout nsscrollview

我有一个使用Autolayout的Cocoa项目,我想在NSPathControl上放一个按钮(实际上是一个NSScrollView),这样即使当scrollView是一个按钮时,它仍然保持在屏幕上的相同位置滚动。

每当我将按钮添加到scrollView的父级时,它都会在scrollView后面结束(即使我明确地使用addSubview:positioned:relativeTo:。如何让它在scrollView上方浮动?

我的后备是将它放在scrollView中,打开translatesAutoresizingMaskIntoConstraints并在滚动scrollView时更新帧。如果可能的话,我更倾向于使用autolayout ......

编辑:这是按钮的布局代码(scrollView中内容的布局非常复杂):

NSButton *button = [[NSButton alloc]initWithFrame:NSZeroRect];
button.translatesAutoresizingMaskIntoConstraints = NO;
button.wantsLayer = YES;//Added incase this affects ordering (it doesn't seem to make a difference)
[self.superview addSubview:button positioned:NSWindowAbove relativeTo:self];

[self.superview addConstraint:[NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20]];
[self.superview addConstraint:[NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeTop multiplier:1.0 constant:20]];

1 个答案:

答案 0 :(得分:1)

通过在scrollView本身上将wantsLayer设置为YES来解决。