Lors de l'écriture d'applications Cocoa, je fais la majorité de la mise en page de l'interface utilisateur par programmation. Par exemple:Existe-t-il un moyen de déterminer par programme les tailles appropriées pour les contrôles intégrés d'Apple?
NSRect popUpFrame = NSMakeRect(10, 10, 100, kDefaultPopUpButtonHeight);
NSPopUpButton * popUp = [[NSPopUpButton alloc] initWithFrame:popUpFrame];
//...
Ma question concerne la constante kDefaultPopUpButtonHeight
. Je maintiens actuellement un fichier source plein de telles constantes, et je remplis les tailles appropriées manuellement. Je suis capable de déterminer les tailles correctes en déposant un nouveau contrôle dans une vue vide dans Interface Builder et en vérifiant ses propriétés pour voir ce que la taille IB lui donne.
Il doit y avoir un meilleur moyen. Est-il possible d'accéder à ces valeurs lors de l'exécution? Idéalement, je m'attendrais à NSControl
avoir une méthode de classe quelque chose comme: +(NSSize)defaultSize
, ou, pour les contrôles comme NSButton
qui ont différentes tailles par défaut en fonction du style de bouton particulier utilisé, quelque chose comme +(NSSize)defaultSizeForButtonStyle:(NSButtonStyle)buttonStyle
.
Apple's Human Interface Guidelines contient des informations sur la mise en page de commande et l'espacement entre contrôles, mais il ne dit rien sur les tailles appropriées pour les contrôles individuels.
"Lors de l'écriture d'applications Cocoa, je fais la majorité de la mise en page de l'interface utilisateur par programme." Pourquoi? Les Nibs sont tellement plus faciles, et ne nécessitent pas de maintenir un en-tête rempli de détails d'implémentation enregistrés. –
@Peter Hosey: Préférence personnelle, basée sur mes propres expériences. J'ai commencé à utiliser IB pour tout, puis j'ai migré pour l'utiliser uniquement pour la mise en page. Après avoir travaillé sur une application dans laquelle nous avons écrit une interface utilisateur complète à partir de zéro (pas de contrôles Apple du tout), j'ai trouvé que j'étais plus à l'aise (et plus efficace) avec la mise en page quand j'ai tout fait en logiciel. –
IB est un excellent outil et il devrait être utilisé lorsque cela est possible, mais il ne sera jamais capable de se comparer à la possibilité de contrôler l'ensemble de l'interface par programmation. Au final, nous sommes des développeurs et les outils ne sont efficaces que s'ils vous font gagner du temps et de la frustration. Il arrive souvent que l'IB fasse obstacle à ce que vous devez accomplir et, pour ces moments-là, vous devez vous programmer. – Paulo