Donnez à une NSWindow un look "iTunes 9"
Nebuchad34
Membre
Bonjour,
Ayant souhaité me mettre à la mode iTunes 9 pour la nouvelle version de Poker Manager, j'ai concocté une petite propriété qui vous permettra de donner à vos fenêtre le dégradé de gris d'iTunes 9 en appelant tout simplement :
[myWindow setITunes9Style];
NSWindow+iTunes9.h
NSWindow+iTunes9.m
Et voilà ce qu'on peut obtenir en fignolant les détails du reste de l'interface :
Ayant souhaité me mettre à la mode iTunes 9 pour la nouvelle version de Poker Manager, j'ai concocté une petite propriété qui vous permettra de donner à vos fenêtre le dégradé de gris d'iTunes 9 en appelant tout simplement :
[myWindow setITunes9Style];
NSWindow+iTunes9.h
<br />@interface NSWindow (iTunes9)<br /><br />+ (NSColor*)iTunesBackgroundColor;<br />+ (NSColor*)iTunesBackgroundColorInactive;<br />- (void)setITunes9style; //nécessite de faire un appel à [[NSNotificationCenter defaultCenter] removeObserver:theWindow] dans le dealloc<br /><br />@end<br />
NSWindow+iTunes9.m
#import "NSWindow+iTunes9.m"<br /><br /><br />@implementation NSWindow (iTunes9)<br /><br />+ (NSColor*)iTunesBackgroundColor<br />{<br /> NSImage *bg = [[NSImage alloc] initWithSize:NSMakeSize(10, 10000)];<br /> [bg lockFocus];<br /><br /> <br /> NSColor *grayBlue = [NSColor colorWithCalibratedRed:155.0/255.0 green:157.0/255.0 blue:161.0/255.0 alpha:1.0];<br /> NSColor *lighterGrayBlue = [NSColor colorWithCalibratedRed:192.0/255.0 green:194.0/255.0 blue:195.0/255.0 alpha:1.0];<br /> NSColor *darkerGrayBlue = [NSColor colorWithCalibratedRed:135.0/255.0 green:137.0/255.0 blue:141.0/255.0 alpha:1.0];<br /> [darkerGrayBlue set];<br /> [[NSBezierPath bezierPathWithRect:NSMakeRect(0,0, 10, 10000)] fill];<br /> <br /> NSGradient *gradient = [[NSGradient alloc] initWithColors:[NSArray arrayWithObjects:<br /> [NSColor colorWithCalibratedWhite:230.0/255.0 alpha:1.0],<br /> lighterGrayBlue,<br /> grayBlue, <br /> darkerGrayBlue,nil]];<br /> [gradient drawInRect:NSMakeRect(0, 10000-100, 10, 100) angle:-90];<br /> <br /> <br /> [bg unlockFocus];<br /> <br /> NSColor *color = [NSColor colorWithPatternImage:bg];<br /> <br /> [gradient release];<br /> [bg release];<br /> <br /> return color;<br />}<br /><br />+ (NSColor*)iTunesBackgroundColorInactive<br />{<br /> NSImage *bg = [[NSImage alloc] initWithSize:NSMakeSize(10, 10000)];<br /> [bg lockFocus];<br /> <br /> NSColor *gray = [NSColor colorWithCalibratedWhite:0.75 alpha:1.0];<br /> [gray set];<br /> [[NSBezierPath bezierPathWithRect:NSMakeRect(0,0, 10, 10000)] fill];<br /> <br /> NSGradient *gradient = [[NSGradient alloc] initWithColors:[NSArray arrayWithObjects:<br /> [NSColor colorWithCalibratedWhite:230.0/255.0 alpha:1.0],<br /> gray, nil]];<br /> <br /> [gradient drawInRect:NSMakeRect(0, 10000-70, 10, 70) angle:-90];<br /> <br /> <br /> [bg unlockFocus];<br /> <br /> NSColor *color = [NSColor colorWithPatternImage:bg];<br /> <br /> [gradient release];<br /> [bg release];<br /> <br /> return color;<br />}<br /><br />- (void)setITunes9style<br />{<br /><br /> [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidBecomeMain:) name:NSWindowDidBecomeMainNotification object:self];<br /> [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignMain:) name:NSWindowDidResignMainNotification object:self];<br /> <br /> [self setBackgroundColor:[NSWindow iTunesBackgroundColor]];<br /><br /> <br />}<br /><br />- (void)windowDidBecomeMain:(NSNotification *)notification {<br /> <br /> [self setBackgroundColor:[NSWindow iTunesBackgroundColor]];<br /> <br />}<br /><br /><br />- (void)windowDidResignMain:(NSNotification *)notification {<br /> <br /> [self setBackgroundColor:[NSWindow iTunesBackgroundColorInactive]];<br />}<br /><br /><br /><br />@end<br />
Et voilà ce qu'on peut obtenir en fignolant les détails du reste de l'interface :
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tiens, dis-moi comment fais-tu pour avoir de belles icones ?
Tu les achètes ? Tu fais appel à un graphiste ? Ou toi-même ?
Je suis content que tu les trouves belles, parce que je sais pas trop quoi en penser moi-même, je manque de recul. Mais tu es quand même la deuxième personne à me le dire, alors ça flatte mon égo
D'une façon plus générale, je trouve ton travail propre et clair, ce qu'on demande à une appli développée pour Mac OS X mais que l'on ne retrouve pas toujours sur l'iPhone...
En espérant qu'apple ne change pas encore le look d'iTunes dans la prochaine version. C'est n'est pas toujours évident de suivre, bien que la nouvelle tendance me plaise bien.
Dommage qu'on ait encore les ascenseurs bleus de Mac OS 10.0 dans 10.6... Ceux di'Tunes me plaisent beaucoup plus.
J'aurais pensé qu'ils en change discrètement avec 10.6, mais non, surement 10.7 !
Ton code m'intéresse bcp. Mais étant débutant, je n'arrive évidemment pas à l'utiliser.
Tout d'abord, dans ton NSWindow+iTunes9.m, je suppose qu'il faut lire #import "NSWindow+iTunes9.h" et non #import "NSWindow+iTunes9.m".
Ensuite, j'ai malheureusement un warning sur [window setITunes9Style]; qui dit : 'NSWindow' may not respond to '-setiTunes9Style'. J'ai pourtant importé le header de la classe NSWindow+iTunes9.
Qu'ai-je fait de mal ?
Didier
Si tu as pris tel quel le code cité, c'est setiTunes9style, pas setiTunes9Style
A+