Upload
cocoaheadsfr
View
544
Download
2
Embed Size (px)
Citation preview
CocoaHeads.fr
NSWindow1988 -
Stéphane SudreEmployé du mois chez Lapeyre
• Profil d’une fenêtre
• Les bases
• Performance
• Utilisations avancées
Sommaire
TitreBoutons Barre de titre
ContenuZone de
redimensionnementOmbre
Profil d’une fenêtre
Profil d’une fenêtre
NSWindow NSPanel
Key La fenêtre qui répond aux entrées clavier
Main La fenêtre standard qui est au premier plan
Activate L’application est l’application active
Profil d’une fenêtre
- initWithContentRect: styleMask: backing: defer:
Créer une fenêtreLes bases
- makeKeyAndOrderFront:
- orderFront:
- orderWindow:relativeTo:
- setAlpha:
- orderOut:
- setHidesOnDeactivate:
- setLevel:
- close / - setReleasedWhenClose:
Masquer n’est pas fermer !!
Afficher/masquer une fenêtreLes bases
kCGDesktopWindowLevel-1
- setFrame:display:animate:
- setFrame:display:
- setContentSize:
+ frameRectForContentRect:styleMask:
Indépendance de la résolution !!
Redimensionner une fenêtreLes bases
- setMinSize:
- setMaxSize:
- setAspectRatio:
- setResizeIncrements:
Contraindre le redimensionnement manuelLes bases
- setShowsResizeIndicator:
- setMinSize:
- setMaxSize:
! Il est peut-être déjà trop tard !
Autoriser/interdire le redimensionnement manuelLes bases
- setFrameOrigin:
- setFrameTopLeftPoint:
- setFrame:display:animate:
Autoriser le déplacement par le fond
- setMovableByBackground:
Déplacer une fenêtre avec du codeLes bases
- miniaturize:
- deminiaturize:
Placer une fenêtre dans le DockLes bases
! Attention à la fermeture de fenêtres dans le Dock
Copyright 2010 Ed Whetstone
Démon!ration
Une fenêtre p"r les g"verner t"tes
- addChildWindow:ordered:- removeChildWindow:- parentWindow
NeXTStep forever
- (id) initWithContentRect:(NSRect) inFrame styleMask:(NSUInteger) inStyle backing:(NSBackingStoreType) inType defer:(BOOL) aFlag {
self=[super initWithContentRect:inFrame styleMask:NSBorderlessWindowMask backing:inType defer:aFlag];
if (self!=nil) {
[self setOpaque:NO]; [self setBackgroundColor: [NSColor clearColor]];
}
return self;}
- (id) initWithContentRect:(NSRect) inFrame styleMask:(NSUInteger) inStyle backing:(NSBackingStoreType) inType defer:(BOOL) aFlag {
self=[super initWithContentRect:inFrame styleMask:NSBorderlessWindowMask backing:inType defer:aFlag];
if (self!=nil) {
[self setOpaque:NO]; [self setBackgroundColor: [NSColor clearColor]];
}
return self;}
- (id) initWithContentRect:(NSRect) inFrame styleMask:(NSUInteger) inStyle backing:(NSBackingStoreType) inType defer:(BOOL) aFlag {
self=[super initWithContentRect:inFrame styleMask:NSBorderlessWindowMask backing:inType defer:aFlag];
if (self!=nil) {
[self setOpaque:NO]; [self setBackgroundColor: [NSColor clearColor]];
}
return self;}
- (id) initWithContentRect:(NSRect) inFrame styleMask:(NSUInteger) inStyle backing:(NSBackingStoreType) inType defer:(BOOL) aFlag {
self=[super initWithContentRect:inFrame styleMask:NSBorderlessWindowMask backing:inType defer:aFlag];
if (self!=nil) {
[self setOpaque:NO]; [self setBackgroundColor: [NSColor clearColor]];
}
return self;}
M
D
I
Forever
HIThemeDrawWindowFrame(...);1
2
rdar://8090925
Démon!ration
developer.apple.com/mac/library/documentation/Cocoa/Conceptual/WinPanel/WinPanel.html
Documentation
Sample Code
developer.apple.com/mac/library/samplecode/RoundTransparentWindow/
Ressources
developer.apple.com/mac/library/samplecode/FunkyOverlayWindow/FunkyOverlayWindow.zip
CocoaHeads.fr