Comment puis-je créer un affichage personnalisé de la classe par programmation?
Je veux créer un très simple customView avec un peu de UIlabel sur elle, Comment dois-je faire . tutoriel ou suggestion sera la bienvenue . Je suis nouveau à cela , n'est-ce pas l'essayer avant.
J'ai essayé cela avec xib.
@interface MyCustomView : UIView
@property (strong, nonatomic) IBOutlet UILabel *Label;
@end
Mise en œuvre
#import "MyCustomTimer.h"
@implementation MyCustomView
-(id)initWithCoder:(NSCoder *)aDecoder{
if ((self = [super initWithCoder:aDecoder])){
[self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil] objectAtIndex:0]];
}
return self;
}
@end
Mais j'ai besoin de faire de la programmation ,s'il vous plaît aider . grâce
Cette question est trop vaste pour une simple QA question ici. Aller à travers le livre ci-dessus qui couvre tout, de la programmation.
passer par un apprentissage de base du livre. c'est le plus simple
Vous souhaitez créer une vue personnalisée en existait déjà une classe ou vous souhaitez créer une classe UIView avec plume fichier
passer par un apprentissage de base du livre. c'est le plus simple
Vous souhaitez créer une vue personnalisée en existait déjà une classe ou vous souhaitez créer une classe UIView avec plume fichier
OriginalL'auteur Ezimet | 2013-08-01
Vous devez vous connecter pour publier un commentaire.
Ici est un moyen simple, espérons que cela vous aide.
OriginalL'auteur Shankar BS
Vous dites que vous ne voulez pas utiliser un XIB et veulent tout faire par programmation.
Vous avez besoin pour mettre en œuvre les
initWithFrame:
méthode:Afin de créer et de configurer vos options de contrôle (polices, de couleurs, d'un redimensionnement automatique des masques etc.) et d'ajouter que les sous-vues, de tous de la
initWithFrame:
méthode. Vous avez probablement envie de casser le code dans différentes méthodes pour garder les choses propres.Si vous utilisez la mise en forme automatique, vous aussi vous voulez créer toutes vos contraintes de la méthode init.
Si vous êtes pas à l'aide de mise en forme automatique, vous devez mettre en œuvre la
-layoutSubviews
méthode. Ce seront appelés à des moments appropriés à la mise en page de votre sous-vues (par exemple, lorsque le cadre de votre vue change):De la
layoutSubviews
méthode, vous pouvez accéder àself.bounds
à la figure de la taille de la vue à l'époque. Cela vous permettra de savoir combien largeur/hauteur de l'alignement ou de l'envelopper les choses correctement.Quand il s'agit de la création d'une instance de votre point de vue, il suffit d'utiliser
[[MyCustomView alloc] init]
(qui feront appelinitWithFrame:
avec un vide rect) ou[[MyCustomView alloc] initWithFrame:...]
. Définir son cadre et de l'ajouter à un certain point de vue. LelayoutSubviews
méthode sera appelée à tous les temps et il sera mis en place en conséquence.OriginalL'auteur Mike Weller
Mise à jour de votre classe pour mettre en œuvre
initWithFrame:
ainsi queinitWithCoder:
, alors vous pouvez appeler le:Dans votre code. Ainsi, vous avez créé une instance (qui est configuré) par programmation.
elle n'est généralement pas tout à fait aussi simple que cela. points de vue généralement d'un redimensionnement automatique de masque de converti dans des contraintes de maintenant donc, cela dépend de comment c'est configuré. Vous pouvez également utiliser la mise en page des sous-vues et de mettre à jour les contraintes des fonctions pour mettre à jour les règles qui sont appliquées...
Je ne suis pas sûr que je vous comprends...ce que je suis en fin de compte demander c'est peut une classe à son image, contraintes par rapport à la superView—à partir de sa propre classe? Ou il doit toujours être de la superView?
Une vue de l'image est dans le cadre de son superviews de limites, mais qui définit, il n'a pas d'importance. Une vue peut définir sa propre image. Il serait généralement classé comme une mauvaise pratique de la sous-vue de connaître la superviews cadre...
OriginalL'auteur Wain
Créer votre propre classe de sous-classement UIView, puis remplacer initWithFrame ou drawRect. Primordial initWithFrame est plus facile pour un débutant.
Votre en-tête (.h) le fichier doit commencer par cela:
Ensuite, dans le fichier d'implémentation (.m), vous devez mettre en place votre propre initWithFrame.
Vous pourriez avoir besoin de données supplémentaires ou d'options dans l'initialiseur, par exemple le texte pour les étiquettes. Dans ce cas, vous pouvez définir une méthode d'initialisation avec des arguments supplémentaires comme ceci:
OriginalL'auteur Zeke
Vous pouvez placer ces lignes dans votre initWithFrame:
Son un exemple très simple .. pour ajouter une simple étiquette, vous pouvez ajouter autant d'objets que vous voulez par programmation.. avec vos emplacements de votre choix et de tailles et de ce que les propriétés que vous voulez...
peut-être vous devriez avoir cherché "UILabel par programmation..
OriginalL'auteur v-i-s-h-a-l