在 NSSplitView 的分隔线上方绘制文本,顶部视图偶尔会在其上方绘制
Drawing text above the divider in an NSSplitView, the top view will occasionally draw over it
这是一个 .swf(抱歉,糟糕的网站和 swf,这是我能捕捉到发生的事情的唯一方式)
http://screencast.com/t/rzJ3b5ihSj
似乎正在发生的事情是,我的分隔线有时会先被绘制,然后 NSSplitView
中的顶部 NSView
被绘制在它上面。但似乎不一致,因为有时分隔线会画在上面。
这是我的 -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];
}
如何才能使分隔线和其中的文本始终显示在顶部?
所以实际上分隔线和我想绘制的文本都是在 NSSplitView
本身上完成的。分隔线两侧的两个视图是子视图,因此无法在它们前面绘制。我最后做的是在顶部视图的底部添加一些填充,以便分隔文本始终暴露
这是一个 .swf(抱歉,糟糕的网站和 swf,这是我能捕捉到发生的事情的唯一方式)
http://screencast.com/t/rzJ3b5ihSj
似乎正在发生的事情是,我的分隔线有时会先被绘制,然后 NSSplitView
中的顶部 NSView
被绘制在它上面。但似乎不一致,因为有时分隔线会画在上面。
这是我的 -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];
}
如何才能使分隔线和其中的文本始终显示在顶部?
所以实际上分隔线和我想绘制的文本都是在 NSSplitView
本身上完成的。分隔线两侧的两个视图是子视图,因此无法在它们前面绘制。我最后做的是在顶部视图的底部添加一些填充,以便分隔文本始终暴露