Venant du monde .NET pour le développement d'ObjC et de l'iPhone, j'ai l'habitude de fournir un support de conception pour mes classes d'interface utilisateur. Par exemple, disons que j'ai une classe de boutons personnalisés avec une propriété de couleur. Je veux être en mesure de définir cette couleur en temps de conception à partir de IB. Comment puis-je accomplir cela? Est-ce même possible? Vaut la peine?Propriétés de la conception dans IB?
Répondre
Il n'est pas possible de créer des plug-ins IB personnalisés pour iOS. Le mieux que vous pouvez faire est d'utiliser un générique UIView
avec une classe personnalisée dans votre plume et définir les propriétés par programmation.
C'est en fait très facile à faire. Dans InterfaceBuilder, sélectionnez le bouton et ouvrez l'inspecteur d'attributs (raccourci clavier: [commande] + 1). Sélectionnez le premier onglet en haut de la fenêtre de l'inspecteur d'attributs et regardez la section intitulée «View». L'entrée marquée "Arrière-plan" aura un rectangle de couleur à côté de lui, qui sera probablement divisé en diagonale, moitié noir et moitié blanc. C'est une indication que l'arrière-plan du bouton est actuellement transparent. Cliquez sur ce rectangle, et la boîte de sélection de couleur apparaîtra. N'oubliez pas de changer la valeur du curseur "alpha" dans la case de sélection des couleurs, sinon le bouton restera complètement transparent.
Here's an image of the attribute inspector, configured like I described.
En fait, ma question était plus sur s'il est possible de créer de * nouvelles * propriétés au moment du design. – Krumelur
@Krumelur Les propriétés de temps de conception ne sont pas disponibles * pour autant que je sache *. La plupart du temps, quand quelqu'un veut faire quelque chose comme ça dans Objective-C, il cherche à sous-classer l'objet avec lequel il veut jouer.C'est un peu plus de travail, mais c'est juste la façon dont la plateforme a été mise en place. –
Vous créez généralement un IBPlugin pour cela, qui peut contenir un seul élément personnalisé ou une collection entière.
Interface Builder Plug-In Programming Guide (Guide officiel)
Custom views in Interface Builder using IBPlugins (inofficial Tutorial)
(! Ce tutoriel devrait vous permettre de continuer Il couvre attributs personnalisés paramètres dans IB.)
Attention cependant: Xcode 4 does not support custom built IBPlugins!
(Et malheureusement, cela reste vrai pour Gold Master.) Espérons qu'il y aura une solution officielle/native une fois que la NDA sera levée, alors assurez-vous de sauvegarder votre IB avant d'installer une copie de Xcode 4.)
Il existe une autre option: Interface Builder fournit des attributs d'exécution définis par l'utilisateur. Lors du chargement du fichier nib, ces attributs sont définis en envoyant '-setValue: forKey:', qui invoque les méthodes de définition de propriété correspondantes. Cependant, Interface Builder autorise un ensemble limité de types pour les attributs d'exécution, à savoir booléen, nombre, chaîne et 'nil'. –
Pour les types arbitraires (comme une propriété NSColor), les plugins Interface Builder sont votre seule option, comme d'autres l'ont mentionné.
Cependant, pour certains types limités, il existe une solution plus simple. Si votre propriété personnalisée est une chaîne, une primitive numérique ou un booléen, vous pouvez utiliser l'inspecteur "Runtime Attributes" dans Interface Builder pour définir ces propriétés lors de la conception.
Cependant, je vois que vous avez le tag 'iphone' sur votre questoin. Les attributs d'exécution ne sont actuellement pas disponibles sur iOS.
En attendant que la fonction 'Attributs d'exécution définis par l'utilisateur' soit plus largement prise en charge, vous pouvez toujours utiliser la propriété 'tag' de UIView. C'est juste un entier, mais vous pouvez l'utiliser comme une clé dans un dictionnaire pour accéder à des propriétés supplémentaires. Par exemple, définissez vos attributs au moment de la conception dans un fichier JSON, chargez-le dans un NSDictionary et parcourez la hiérarchie de la vue lors de l'exécution, en appliquant les attributs que vous avez définis.
Ce n'est pas idéal mais mieux que rien, ou mettre en œuvre des charges de minuscules classes personnalisées juste pour utiliser une police personnalisée ou autre.
Les balises sont en effet très utiles. Solution intéressante avec le stockage des attributs en tant que ressources JSON. – Krumelur
- 1. Conseils pour la conception de propriétés?
- 2. modèle de conception de propriétés polymorphes
- 3. Dessin UITableViewCell dans IB
- 4. Affectation de champs de texte IB pour déléguer les propriétés UITextField
- 5. Propriétés de contrôle de drapeau requises dans la vue de conception
- 6. rotation de l'uiview withoud IB
- 7. UIPickerView sans IB?
- 8. Problème avec IB
- 9. Définition automatique des propriétés au moment de la conception dans le contrôle Windows.Forms
- 10. Tables groupées uniquement pour la mise en page dans IB
- 11. bits d'interface réutilisables, conçu dans IB
- 12. Plusieurs contrôles dans UIView utilisant IB
- 13. Qu'est-ce que IB dans IPhone
- 14. appel de l'API IB de Python
- 15. Définition de la propriété de délégué sans IB
- 16. gérer des objets IB sans iboutlets
- 17. Ajout de propriétés inconnues (au moment de la conception) à un objet ExpandoObject
- 18. Autoriser les propriétés de chaîne multiligne dans la fenêtre Propriétés
- 19. Ajout d'éléments de la barre de navigation à la vue secondaire dans IB
- 20. Impossible de restaurer la sortie de la fenêtre appDelegate dans IB
- 21. IB constructeur ou programmaticaly dessiner?
- 22. Base de données de conception
- 23. Comment changer la taille de la vue dans IB pour iPhone 3.0
- 24. Comment définir la police d'un élément de l'interface utilisateur sur la police "System" dans IB?
- 25. fournir des propriétés dans le temps de conception par des contrôles personnalisés (.NET)
- 26. DataTemplate au moment de la conception
- 27. la conception de l'application facebook?
- 28. Quel est le point de la propriété "Controller Key" dans IB dans le volet Inspector> Bindings?
- 29. Paradigmes dans la disposition/conception de la barre de menus
- 30. Conception de modèle MVVM
Je suppose que la réponse est «non»? – Krumelur