Question

j'ai un UIView auquel j'aimerais ajouter plusieurs morceaux de texte.J'ai utilisé un UITextView mais je pense que c'est exagéré car il n'est pas nécessaire qu'il soit modifiable.J'ai pensé à utiliser un UILabel ou un UITextField, mais je ne vois pas comment vous indiquez à la vue d'ensemble où positionner le UILabel ou UITextField en lui-même.Je veux l'objet à empreinte la plus faible qui me permettra de mettre du texte d'une police/couleur/taille de mon choix dans mon UIView où je le veux.Pas trop demander, hein ?

Était-ce utile?

La solution

L'approche la plus simple pour vous serait :

UILabel *yourLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 300, 20)];

[yourLabel setTextColor:[UIColor blackColor]];
[yourLabel setBackgroundColor:[UIColor clearColor]];
[yourLabel setFont:[UIFont fontWithName: @"Trebuchet MS" size: 14.0f]]; 
[yourSuperView addSubview:yourLabel];

Construire ou remplir des vues dans votre code vous obligera probablement à utiliser CGRectMake beaucoup.Comme son nom l'indique, il crée un rectangle que vous pouvez utiliser pour définir la position relative (par rapport aux bordures de votre vue d'ensemble) et la taille de votre vue d'ensemble. UIView-Subclass (dans ce cas un UILabel).

Cela fonctionne comme ceci :

yourLabel.Frame = CGRectMake(x, y, width, height); //x,y,width,height are float values.

x définit l'espacement entre la bordure gauche de la vue d'ensemble et le début de la sous-vue que vous êtes sur le point d'ajouter, il en va de même pour y mais relatif à l'espacement entre la bordure supérieure de votre vue d'ensemble.alors la largeur et la hauteur sont explicites, je pense.

J'espère que cela vous mettra sur la bonne voie.

Autres conseils

Au lieu de trouver un moyen d'indiquer à la vue où positionner l'UILabel, vous pouvez indiquer à l'UILabel où se positionner dans la vue en utilisant "center".

Par exemple.

myLabel.center = CGPointMake(0.0, 0.0);

J'espère que vous pourrez utiliser UILabel, pour moi c'est la forme de base d'un texte flexible non modifiable.

Pour Swift :

    let yourLabel = UILabel(frame: CGRectMake(100, 100, 100, 100))
    yourLabel.textColor = UIColor.whiteColor()
    yourLabel.backgroundColor = UIColor.blackColor()
    yourLabel.text = "mylabel text"
    yoursuperview.addSubview(yourLabel)

Cette question est ancienne, mais pour une option de texte UIView pure sans utiliser UILabel ou UITextField (comme le décrivent toutes les autres réponses, mais la question est de savoir comment le faire sans eux), drawRect dans un UIView sous-classé fonctionne pour moi.Ainsi:

 - (void)drawRect:(CGRect)rect{
     NSString *string = @"Hello World!";
     [string drawAtPoint:CGPointMake(100, 100) withFont:[UIFont boldSystemFontOfSize:16.0]];
 }

Cette routine affiche un texte à une position X-Y

-(void)placeText:(NSString *)theText:(int)theX:(int)theY {
    UILabel *textLabel;

    // Set font and calculate used space
    UIFont *textFont = [UIFont fontWithName:@"Helvetica" size:14];
    CGSize textStringSize = [theText sizeWithFont:textFont constrainedToSize:CGSizeMake(300,50) lineBreakMode:NSLineBreakByTruncatingTail];

    // Position of the text
    textLabel = [[UILabel alloc] initWithFrame:CGRectMake(theX+OFFSETIMAGEX-(textStringSize.width/2), theY+OFFSETIMAGEY-(textStringSize.height/2), textStringSize.width,textStringSize.height)];

    // Set text attributes
    textLabel.textColor = [UIColor blackColor];
    textLabel.backgroundColor = [UIColor orangeColor];
    textLabel.font = textFont;
    textLabel.text = theText;

    // Display text
    [self.view addSubview:textLabel];
}

Il est peut-être tard mais voici ce que j'utilise : -

CGRect labelFrame = CGRectMake(120,300, 530, 100);
UILabel *myLabel = [[UILabel alloc] initWithFrame:labelFrame];
//If you need to change the color
[myLabel setTextColor:[UIColor whiteColor]];
//If you need to change the system font
[myLabel setFont:[UIFont fontWithName:NULL size:23]];
//If you need alignment
[myLabel setTextAlignment:NSTextAlignmentCenter];
// The label will use an unlimited number of lines
[myLabel setNumberOfLines:0];
//Add label view to current view
[self.view addSubview:myLabel];
NSString *someString = @"Sample String, Yarp!";
myLabel.text = someString;

ajoutez un UILabel à votre vue.puis remplacez la méthode layoutSubviews de View.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top