Slides de la

Preview:

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

CocoaHeads.fr