Frage

Ich habe ein UIView dem ich gerne mehrere Textteile hinzufügen möchte.Ich habe ein verwendet UITextView aber ich denke, das ist übertrieben, da es nicht editierbar sein muss.Ich dachte darüber nach, a zu verwenden UILabel oder ein UITextField, aber ich verstehe nicht, wie Sie der Übersicht sagen, wo sie positioniert werden soll UILabel oder UITextField in sich selbst.Ich möchte das Objekt mit der geringsten Stellfläche, mit dem ich Text in einer Schriftart/-farbe/-größe meiner Wahl in mein Objekt einfügen kann UIView wo ich es will.Nicht zu viel verlangt, oder?

War es hilfreich?

Lösung

Der einfachste Ansatz für Sie wäre:

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];

Zum Erstellen oder Füllen von Ansichten in Ihrem Code müssen Sie wahrscheinlich Folgendes verwenden CGRectMake eine Menge.Wie der Name schon sagt, erstellt es ein Rechteck, mit dem Sie die relative Position (relativ zu den Rändern Ihrer Übersicht) und die Größe Ihrer Übersicht festlegen können UIView-Subclass (in diesem Fall a UILabel).

Es funktioniert so:

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

x Definiert den Abstand zwischen dem linken Rand der Oberansicht und dem Anfang der Unteransicht, die Sie hinzufügen möchten. Das Gleiche gilt für y aber bezogen auf den Abstand zwischen dem oberen Rand Ihrer Übersicht.dann sind Breite und Höhe meiner Meinung nach selbsterklärend.

Ich hoffe, das bringt Sie auf den richtigen Weg.

Andere Tipps

Anstatt eine Möglichkeit zu finden, der Ansicht mitzuteilen, wo das UILabel positioniert werden soll, können Sie dem UILabel mitteilen, wo es sich in der Ansicht positionieren soll, indem Sie „center“ verwenden.

Z.B.

myLabel.center = CGPointMake(0.0, 0.0);

Ich hoffe, Sie können UILabel verwenden. Für mich ist es die Grundform eines flexiblen, nicht bearbeitbaren Textes.

Für 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)

Diese Frage ist alt, aber für eine reine UIView-Textoption ohne Verwendung von UILabel oder UITextField (wie alle anderen Antworten beschreiben, aber die Frage ist, wie man es ohne sie macht), funktioniert drawRect in einem untergeordneten UIView für mich.Etwa so:

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

Diese Routine zeigt einen Text an einer X-Y-Position an

-(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];
}

Es mag zwar spät sein, aber hier ist, was ich verwende:-

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;

Fügen Sie Ihrer Ansicht ein UILabel hinzu.Überschreiben Sie dann die Methode „layoutSubviews“ der Ansicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top