在NSSplitView中的分隔符上方绘制文本,顶视图偶尔会在其上绘制

时间:2015-09-25 18:20:48

标签: objective-c cocoa drawrect nssplitview

这是一个.swf(原谅,糟糕的网站和swf,这是我能捕捉到正在发生的事情的唯一方式)

http://screencast.com/t/rzJ3b5ihSj

似乎正在发生的事情是,偶尔会先绘制我的分隔符,然后NSView中的顶部NSSplitView会覆盖它。但它似乎不一致,因为有时分隔线会占据上风。

以下是我的-drawDividerInRect方法,已从NSSplitView

覆盖
-(void) drawDividerInRect:(NSRect)aRect
{
   [[NSColor colorWithRed:10.0/255.0 green:10.0/255.0 blue:10.0/255.0 alpha:0.0] set];
   NSRectFill(aRect);

   id topView = [[self subviews] objectAtIndex:0];
   NSRect topViewFrameRect = [topView frame];

   NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"Helvetica" size:26], NSFontAttributeName,[NSColor whiteColor], NSForegroundColorAttributeName, nil];

   NSAttributedString * currentText=[[NSAttributedString alloc] initWithString:@"Tool Properties" attributes: attributes];
   NSSize stringSize = [currentText size];

   CGFloat xOffset = ([topView frame].size.width - stringSize.width)/2;
   NSRect textRect = NSMakeRect(topViewFrameRect.origin.x+xOffset, topViewFrameRect.size.height+50, stringSize.width, stringSize.height);

   [currentText drawInRect:textRect];
}

我怎样才能让它成为我的分频器&其中的文字一直在顶部?

1 个答案:

答案 0 :(得分:0)

实际上,分隔符和我想要绘制的文本都是在NSSplitView本身完成的。分隔符两侧的两个视图都是子视图,因此无法在它们前面绘制。我最后做的是在顶视图的底部添加一些填充,以便始终公开分隔文本