NSScrollView始终显示在其他视图之上

时间:2015-02-10 06:37:38

标签: cocoa rubymotion

无论如何,我的NSScrollViews似乎总是出现在任何其他视图的顶部,即使最近添加了另一个视图并且应该显示在最顶层。

如何才能在NSScrollView上方显示另一个视图(比如简单的NSView)?

2 个答案:

答案 0 :(得分:1)

我终于通过在NSScrollView,NSScrollView的内容视图和我的外部视图上将setWantsLayer设置为YES(本例中为true,因为我正在使用RubyMotion)来解决这个问题想要出现在NSScrollView上方。

解决了我的问题并允许其他视图出现在NSScrollView上方。

答案 1 :(得分:-1)

请检查您的xib,并确保您的滚动视图位于视图层次结构的最顶层(“文档大纲”)。但是,加载时不一定100%保证首先绘制滚动视图。手动强制您对视图的顺序的一种方法是以编程方式基于标记移动它们。

在Interface Builder的Attributes Inspector中,转到底部并找到“View”部分。在视图中添加一个标记,0表示您想要的最底部视图,并从那里开始。

然后在您的控制器中添加此方法定义&打电话给它:

NSComparisonResult compareViews(id firstView, id secondView, void *context) {
   NSInteger firstTag = [firstView tag];
   NSInteger secondTag = [secondView tag];

   if (firstTag == secondTag) {
      return NSOrderedSame;
   } else {
      if (firstTag < secondTag) {
         return NSOrderedAscending;
      } else {
         return NSOrderedDescending;
      }
   }
}

[self.view sortSubviewsUsingFunction:(NSComparisonResult (*)(id, id, void*))compareViews context:nil];

这样可以确保您按照自己喜欢的顺序查看自己的观看次数