8
votes

Puis-je centrer un NstoolBaritem dans une barre d'outils?

c'est juste ça. Je veux centrer deux boutons. Ma barre d'outils ressemble à ceci ([B] est un bouton):

[b] <---- espace flexible ---> [b] [b] <---- espace flexible ---> [Barre de recherche]

Mais la barre de recherche est plus grande que le bouton situé à l'extrême gauche afin que les boutons moyens ne soient pas centrés. J'ai essayé d'ajouter une vue avec une largeur personnalisée mais qui est vêtue par la localisation. Y a-t-il un moyen de les centrer?


0 commentaires

4 Réponses :


0
votes

Des choses de centrage, ou contrôler en effet la mise en page au-delà de la commande de boutons, tout en utilisant des barres d'outils, n'est pas nécessairement une bonne idée.

edit: Il a été porté à mon attention que Mail.app utilise en effet Voodoo pour faire quelque chose comme ce que vous suggérez.

Ils le font en gardant une trace des éléments de la barre d'outils et redimensionnez le premier espace flexible de la barre d'outils pour aligner la barre d'outils.

Cela pourrait fonctionner pour certains cas d'utilisation, mais risque d'être fragile; Utilisez avec prudence et gardez à l'esprit que si les utilisateurs peuvent personnaliser la barre d'outils, ils sont susceptibles de supprimer l'espace flexible, en train de choisir votre centrage.


4 commentaires

Mais mail.app fait cela. Ils alignent les boutons avec la liste source ?!


@David: Mail.app utilise ce qui ne peut être décrit que comme vaudou.


Bien que cette question soit datée, cela reproduira le même comportement que Mail.App Github.com/jwells89/jwtoolbaradaptiquesPaceItem


Salut @Cory, ce jwtoolbaradaptspaceItem n'est toujours pas aussi fantaisiste que le vaudou par Apple. La caractéristique intéressante de la pomme est, dans le mode "Personnaliser la barre d'outils", l'élément de la barre d'outils est animé lorsqu'un nouveau voisin est ajouté. Le nstoolbarflexiblespaceItem a ce comportement, mais il ne tient pas compte de la position d'une autre vue, par exemple une sous-vision d'une séparation. Il n'y a pas de public nstolbarflexiblespaceItem il semble donc impossible de la sous-classer. Je vais regarder ce problème plus tard. Peut-être qu'une animation de base est nécessaire? Merci pour votre commentaire très utile!



11
votes

Une réponse très tardive, mais depuis que je devais aussi faire cela, je viens de écrir une sous-classe qui créera un espace pour centrer la prochaine barre d'outils:

http://github.com/timothyarmes/taadaptepacePaceItem


4 commentaires

Juste ce que j'ai besoin! Malheureusement, je ne trouve pas de licence sur votre code, autrement que "Tous les droits réservés" de XCode. Devinez que vous avez l'intention de pouvoir utiliser cela, pourriez-vous envisager de commettre un fichier de licence de style BSD au représentant de la rendre officielle?


Oui, j'ai besoin d'ajouter ça. Je vais ajouter une licence MIT afin que vous puissiez supposer que vous pouvez l'utiliser comme vous s'il vous plaît ...


Pourriez-vous s'il vous plaît ajouter la licence? Cela a également résolu mon problème, mais je ne peux pas utiliser sans la licence. Merci!


Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses uniquement uniquement peuvent devenir invalides si la page liée change.



0
votes

Au lieu de cette approche compliquée, je le laisserais centrifuger en ajoutant des éléments d'espace vierge supplémentaires de chaque côté jusqu'à ce que ces deux boutons soient au milieu de la fenêtre. La barre d'outils devrait redimensionner de manière appropriée.


1 commentaires

Cela ne comportera pas l'élément dans la fenêtre, il ne le concentrera que entre les articles de chaque côté. S'il y a plus d'articles sur une fois côté ou l'autre, il sera désactivé.



11
votes

Si votre cible de déploiement est MacOS 10.14 (Mojave) ou ultérieure, vous pouvez centrer une zone de barre d'outils en définissant la barre d'outils CentreDIdentifier Propriété à l'identifiant de l'élément que vous souhaitez centré.

Ceci est destiné à centrer l'élément de la barre d'outils contenant le titre de la fenêtre lorsque vous avez défini le titre VISIBILIBILITÉ TO NSWINDOWTITLETLEHENDÉS . Cela pourrait ne pas fonctionner aussi bien dans d'autres scénarios.


0 commentaires