Slides de la

776 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
776
On SlideShare
0
From Embeds
0
Number of Embeds
62
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Slides de la

  1. 1. CocoaHeads.fr
  2. 2. NSWindow 1988 -
  3. 3. Stéphane Sudre Employé du mois chez Lapeyre
  4. 4. Sommaire • Profil d’une fenêtre • Les bases • Performance • Utilisations avancées
  5. 5. Profil d’une fenêtre Titre Boutons Barre de titre Zone de Ombre Contenu redimensionnement
  6. 6. Profil d’une fenêtre NSWindow NSPanel
  7. 7. Profil d’une fenêtre 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
  8. 8. Les bases Créer une fenêtre - initWithContentRect: styleMask: backing: defer:
  9. 9. Les bases Afficher/masquer une fenêtre - makeKeyAndOrderFront: - orderFront: - orderWindow:relativeTo: - setAlpha: - orderOut: - setHidesOnDeactivate: - setLevel: kCGDesktopWindowLevel-1 ! Masquer n’est pas fermer ! - close / - setReleasedWhenClose:
  10. 10. Les bases Redimensionner une fenêtre - setFrame:display:animate: - setFrame:display: - setContentSize: ! Indépendance de la résolution ! + frameRectForContentRect:styleMask:
  11. 11. Les bases Contraindre le redimensionnement manuel - setMinSize: - setMaxSize: - setAspectRatio: - setResizeIncrements:
  12. 12. Les bases Autoriser/interdire le redimensionnement manuel - setShowsResizeIndicator: - setMinSize: - setMaxSize: ! Il est peut-être déjà trop tard !
  13. 13. Les bases Déplacer une fenêtre avec du code - setFrameOrigin: - setFrameTopLeftPoint: - setFrame:display:animate: Autoriser le déplacement par le fond - setMovableByBackground:
  14. 14. Les bases Placer une fenêtre dans le Dock - miniaturize: - deminiaturize: ! Attention à la fermeture de fenêtres dans le Dock
  15. 15. Copyright 2010 Ed Whetstone
  16. 16. Démon!ration
  17. 17. Une fenêtre p"r les g"verner t"tes
  18. 18. - addChildWindow:ordered: - removeChildWindow: - parentWindow
  19. 19. NeXTStep forever
  20. 20. - (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; }
  21. 21. - (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; }
  22. 22. - (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; }
  23. 23. - (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; }
  24. 24. M I D Forever
  25. 25. 1 HIThemeDrawWindowFrame(...); 2 rdar://8090925
  26. 26. Démon!ration
  27. 27. Ressources Documentation developer.apple.com/mac/library/documentation/Cocoa/Conceptual/WinPanel/WinPanel.html Sample Code developer.apple.com/mac/library/samplecode/RoundTransparentWindow/ developer.apple.com/mac/library/samplecode/FunkyOverlayWindow/FunkyOverlayWindow.zip
  28. 28. CocoaHeads.fr

×