Problem mit 2 resizable UILabels untereinander platzieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit 2 resizable UILabels untereinander platzieren

    Hallo an alle,

    vielleicht ist jemand so nett und kann mir bei folgendem Problem helfen:

    Ich habe zwei UILabels, die ich mit Daten aus einer Property List "füttere". Die beiden Labels passen sich in der Höhe entsprechend der Textlänge an.
    Nun möchte ich gerne die beiden Labels untereinander platzieren. Das beide exakt untereinander stehen.
    Da der Text flexibel lang ist, weiß ich nicht wie ich Position der Höhe für das zweite Label (also das unter dem ersten Label ) definieren muss.

    Ich würde mich freuen, wenn jemand eine Idee hierzu hat.
    Viele Grüße Bettina

    Quellcode

    1. - (void)viewDidLoad
    2. {
    3. [super viewDidLoad];
    4. self.imageView.image = [UIImage imageNamed:[self.recipesDictionary objectForKey:@"bild"]];
    5. self.rezeptname.text = [self.recipesDictionary objectForKey:@"name"];
    6. self.rezeptbeschreibung.text = [self.recipesDictionary objectForKey:@"beschreibung"];
    7. self.rezeptzutaten.text = [self.recipesDictionary objectForKey:@"zutaten"];
    8. UIFont* font = rezeptzutaten.font;
    9. CGSize constraintSize = CGSizeMake(rezeptzutaten.frame.size.width, MAXFLOAT);
    10. CGSize labelSize = [rezeptzutaten.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    11. rezeptzutaten.frame = CGRectMake(rezeptzutaten.frame.origin.x, rezeptzutaten.frame.origin.y, rezeptzutaten.frame.size.width, labelSize.height);
    12. UIFont* fonttwo = rezeptbeschreibung.font;
    13. CGSize constraintSizetwo = CGSizeMake(rezeptbeschreibung.frame.size.width, MAXFLOAT);
    14. CGSize labelSizetwo = [rezeptbeschreibung.text sizeWithFont:fonttwo constrainedToSize:constraintSizetwo lineBreakMode:UILineBreakModeWordWrap];
    15. rezeptbeschreibung.frame = CGRectMake(rezeptbeschreibung.frame.origin.x, rezeptbeschreibung.frame.origin.y, rezeptbeschreibung.frame.size.width, labelSizetwo.height);
    16. scrollView.contentSize = CGSizeMake(scrollView.contentSize.height, rezeptzutaten.frame.origin.y + rezeptzutaten.frame.size.height + 50);
    17. }
    Alles anzeigen
  • Hallo Michael,

    erstmal Danke für Deine schnelle Antwort

    Könntest Du mir vielleicht anhand meines Code Beispiels erklären, wie ich das mache, denn das ist ja mein Problem ...
    Bin leider noch Anfänger und tue mich manchmal etwas schwer ...
  • Ich gehe jetzt mal davon aus, dass rezeptbeschreibung das untere UILabel ist, dann musst du in der Zeile 20, da wo rezeptbeschreibung.frame.origin.y steht folgendes hinschreiben:

    Quellcode

    1. rezeptzutaten.frame.origin.y + labelSize.height + x

    Wobei Du das x durch den Abstand zwischen den beiden Labels ersetzen musst (zum Beispiel 8.0).

    Michael
  • Hallo Michael,

    Danke für Deine Antwort.

    irgendwie funktioniert das nicht.
    Hab' wohl gerade einen Denkproblem ....
    Hab' Deinen Code angepasst, denn rezeptzutaten ist das untere Label ...
    Nun, stehen die beiden zwar untereinander, aber der Abstand ist viel zu groß.
    Ich habe für x 1.0 eingeben ...

    LG Bettina
  • Also, hab' es jetzt so gemacht das Rezeptbeschreibung das untere Label ist, wie Du angenommen hast.
    Wenn ich das jetzt so mache, ist der Abstand zwischen den beiden Labels sehr groß.
    Bestimmt habe ich etwas falsch gemacht ....

    Hier mein Code:

    Quellcode

    1. - (void)viewDidLoad
    2. {
    3. [super viewDidLoad];
    4. self.imageView.image = [UIImage imageNamed:[self.recipesDictionary objectForKey:@"bild"]];
    5. self.rezeptname.text = [self.recipesDictionary objectForKey:@"name"];
    6. self.rezeptbeschreibung.text = [self.recipesDictionary objectForKey:@"zubereitung"];
    7. self.rezeptzutaten.text = [self.recipesDictionary objectForKey:@"zutaten"];
    8. UIFont* font = rezeptzutaten.font;
    9. CGSize constraintSize = CGSizeMake(rezeptzutaten.frame.size.width, MAXFLOAT);
    10. CGSize labelSize = [rezeptzutaten.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    11. rezeptzutaten.frame = CGRectMake(rezeptzutaten.frame.origin.x, rezeptzutaten.frame.origin.y, rezeptzutaten.frame.size.width, labelSize.height);
    12. UIFont* fonttwo = rezeptbeschreibung.font;
    13. CGSize constraintSizetwo = CGSizeMake(rezeptbeschreibung.frame.size.width, MAXFLOAT);
    14. CGSize labelSizetwo = [rezeptbeschreibung.text sizeWithFont:fonttwo constrainedToSize:constraintSizetwo lineBreakMode:UILineBreakModeWordWrap];
    15. rezeptbeschreibung.frame = CGRectMake(rezeptbeschreibung.frame.origin.x, rezeptbeschreibung.frame.origin.y + rezeptzutaten.frame.origin.y + labelSize.height + 1, rezeptbeschreibung.frame.size.width, labelSizetwo.height);
    16. scrollView.contentSize = CGSizeMake(scrollView.contentSize.height, rezeptbeschreibung.frame.origin.y + rezeptbeschreibung.frame.size.height + 50);
    17. }
    Alles anzeigen
  • Hallo Michael,

    herzlichen Dank.

    In diesem Moment hatte ich es auch endlich verstanden, dass ich es ersetzen muss. Ist ja, auch logisch.

    Funktioniert bereits alles total super, vielen vielen Dank nochmal für Deine Hilfe!!!
    Ansonsten hätte ich wohl noch ewig überlegt.

    Viele Grüße Bettina