2015-09-25 1 views
0

est ici un .swf (pardon, le mauvais site et swf, qui était la seule façon que je pouvais saisir ce qui se passait)texte dessin au-dessus du diviseur dans un NSSplitView, la vue de dessus occasionnellement tirer dessus

http://screencast.com/t/rzJ3b5ihSj Ce qui semble se produire, c'est que mon diviseur est parfois dessiné en premier, puis le NSView en haut dans le NSSplitView dessine dessus. Mais il semble incohérent, car parfois le diviseur se dessine sur le dessus.

Voici ma méthode -drawDividerInRect, surchargée de 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]; 
} 

Comment puis-je faire si mon diviseur & texte qu'il tire sur tout le temps?

Répondre

0

Donc effectivement le diviseur, et le texte que je voulais dessiner, étaient tous faits sur le NSSplitView lui-même. Les deux vues de chaque côté du diviseur sont des sous-vues, et donc il n'y a aucun moyen de dessiner devant eux. Ce que j'ai fini par faire était d'ajouter un peu de rembourrage au bas de la vue de dessus pour que le texte du diviseur soit toujours visible