2010-08-20 7 views
1

J'essaye de créer un NSSearchField par programme; Cependant, je ne sais pas comment trouver la hauteur d'un NSSearchField standard (comme dans Interface Builder.) Évidemment, je pourrais simplement copier la hauteur d'une entité NSSearchField dans IB et appeler NSMakeFrame avec cette hauteur, mais cela semble hackish - que se passe-t-il quand Apple change la hauteur d'un champ de recherche typique? Je préférerais que la hauteur ne soit pas codée en dur dans mon application. C'est plus une question de «bonnes pratiques», pas une question de «je ne peux pas l'obtenir du tout».Comment créer un NSSearchField par programme?

Merci!

Répondre

1

La méthode magique pour cela est

[mysearchfield sizeToFit]

qui change le cadre de la largeur et la hauteur minimum. Je l'utilise dans un emballage Cocoa où les applications doivent construire leur GUI complètement sans IB et cela fonctionne sur presque n'importe quelle classe NSControl excepté les mêmes cas (comme la petite taille de contrôle et NSComboBox) et pour donner la largeur de l'icône seulement NSPopUpButton.

Regardez également le guide Interface humaine de Apple. Les tailles de pixels sont fixes, donc il n'y a aucun danger à utiliser des constantes de pixels magiques.

0

Donc, vous sous-classez NSSearchField? vous voulez le créer par programmation, mais vous ne savez pas vraiment pourquoi. Vous avez donc besoin du cadre pour faire votre dessin personnalisé? Je pense que lorsque vous surchargez le code de dessin, vous devriez juste essayer de voir ce qui fonctionne le mieux, en d'autres termes essayer les hauteurs et voir lequel correspond le mieux à votre conception d'application.

+0

Non, pas de sous-classe. Je suis simplement en l'instanciant et en le plaçant dans un NSToolbar. Je sais que cela peut être fait dans IB, mais je code à la main cette fenêtre particulière (plus comme un exercice qu'autre chose.) Je peux appeler ce qui suit: NSSize searchFieldSize = NSMakeSize (400, 50); [searchField setFrameSize: searchFieldSize]; mais ça me semble un peu sale. –

Questions connexes