Lorsque le dock OS X est affiché, il "réserve" une partie de l'écran et empêche Windows maximisé de passer derrière le dock lorsqu'il est maximisé. Comment puis-je faire en sorte que ma propre application Cocoa fasse de même ?
Réponse
Trop de publicités?La "zone maximisable" d'une fenêtre est basée sur la taille de l'écran. visibleFrame
.
[[NSScreen mainScreen] visibleFrame]
Le rectangle renvoyé est toujours basé sur les paramètres actuels de l'interface utilisateur et n'inclut pas la zone actuellement occupée par le dock et la barre de menu.
Comme il est basé sur les paramètres actuels de l'interface utilisateur, le rectangle renvoyé peut changer entre les appels et ne doit pas être mis en cache. Le rectangle définit la partie de l'écran dans laquelle il est actuellement possible de dessiner le contenu de votre application en toute sécurité.
Il n'est pas fait mention de la possibilité d'ajuster ce paramètre. visibleFrame
Je ne pense donc pas que vous réussirez à influencer la taille du Zoom "global".
Toutefois, si vous souhaitez uniquement ajuster la taille zoomée de l'écran de l'ordinateur, vous pouvez le faire à partir de l'écran de l'ordinateur. de votre application renvoie un rectangle plus petit dans la fenêtre NSWindowDelegate
méthode windowWillUseStandardFrame:defaultFrame:
.
Le cadre standard d'une fenêtre doit fournir la taille et l'emplacement qui sont "les meilleurs" pour le type d'informations affichées dans la fenêtre, en tenant compte du ou des écrans disponibles. Par exemple, la meilleure largeur pour une fenêtre qui affiche un document de traitement de texte est la largeur d'une page ou la largeur de l'affichage, la plus petite des deux. La meilleure hauteur peut être déterminée de manière similaire. Au retour de cette méthode, la méthode zoom : modifie le cadre standard renvoyé, si nécessaire, pour l'adapter à l'écran actuel.
Cela vous permettra de prendre en compte une "barre latérale ancrée" lors du zoom. les fenêtres de votre application . Les autres applications seront redimensionnées au-dessus de la barre latérale ancrée.