我的应用有一个使用InspectorBar的NSTextView。但是,它只是坐在窗口的顶部:
我希望能够将它进一步放在黑暗的水平条上,目前这是一个NSImageView。 setFrame似乎没有任何效果。我怎么能这样做?
编辑:我正在努力修复别人的项目实施。如您所见,他们能够移动检查器栏,并且他们没有使用NSToolbar。所以一定是可能的。
以下是此人如何实现这一目标:
- (void) addStyleBar
{
NSArray* subviews = [self.window.contentView superview].subviews;
[self.styleBar removeFromSuperview];
[subviews enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop)
{
if (![obj isKindOfClass: [MainView class]])
{
self.styleBar = obj;
}
}];
[self.styleBar setFrame: NSMakeRect(300.0f, 2.0f, CGRectGetWidth(self.styleBar.frame), CGRectGetHeight(self.bounds))];
[self addSubview: self.styleBar];
}
但这对我的项目没有任何影响。
编辑2:如果我添加这样的约束:
[[self.leftColumnVC.textView.window.contentView superview] addConstraint:[NSLayoutConstraint constraintWithItem:inspectorBarView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:formattingBarBackground attribute:NSLayoutAttributeTop multiplier:1 constant:0 ]];
这里的formattingBarBackground是上面第一张图片中看到的深灰色条。如果我这样做,我会得到这个:
这很好,因为顶部的栏没有预留空间,通过迭代窗口的子视图,我仍然可以获得对NSInspectorBar的引用,所以它仍然存在,它只是不可见。它是否隐藏在formattingBarBackground图像视图后面?如果是这样我怎么能把它带到前面?
答案 0 :(得分:1)
Inspector Bar位于窗口工具栏下方。所以你的问题来自于你的“iTunes”用户界面的实现。如果您要在NSToolbar中将其实现为NSToolbarItems,那么Inspector Bar会自动将其置于其下方。
There is no API to alter to the location of the Inspector Bar,这是你能做的最好的(没有实现你自己的检查栏)。