Größenberechnung eines UITextView

  • Größenberechnung eines UITextView

    Hallo!

    Ich versuche gerade, die Größe eines UITextView an die Größe des enthaltenen Textes anzupassen. Grundsätzlich funktioniert der folgende Code, allerdings zeigt sich, dass die Höhe des Textviews etwas zu klein errechnet wird; die letzte Zeile wird nur zur Hälfte gezeigt:

    Quellcode

    1. CGRect r = [_dataCellText frame];
    2. r.size.height = [[_dataCellText text] sizeWithFont:[_dataCellText font] constrainedToSize:CGSizeMake([_dataCellText frame].size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height;
    3. [_dataCellText setFrame:r];

    _dataCellText -> UITextView

    Die contentInsets sind (eigentlich im IB eingestellt) auf 0.0f in alle Richtungen ...

    Liegt das an sizeWithFont: ... oder habe ich etwas übersehen?

    Danke Euch!
  • RE: Größenberechnung eines UITextView

    Versuche mal bei der Berechnung über sizeWithFont:constrainedToSize:lineBreakMode: zuvor 14 bei der width abzuziehen. Nach der Berechnung solltest Du dann 16 zur berechneten Höhe dazu addieren. Dies kommt bei mir zumindest sehr gut hin. Evtl. musst Du die beiden Werte noch ein wenig anpassen.
  • RE: Größenberechnung eines UITextView

    Original von macmoonshine
    Hast Du mal sizeToFit ausprobiert.
    Nein, aber jetzt. Leider fehlen (bei unverändertem size.height) dann einige Zeilen oder (bei size.height = 1) der ganze Inhalt des TextViews.

    Original von MCDan
    Versuche mal bei der Berechnung über sizeWithFont:constrainedToSize:lineBreakMode: zuvor 14 bei der width abzuziehen. Nach der Berechnung solltest Du dann 16 zur berechneten Höhe dazu addieren. Dies kommt bei mir zumindest sehr gut hin. Evtl. musst Du die beiden Werte noch ein wenig anpassen.
    Das werde ich einmal testen. Preisfrage: Warum 14 und warum 16 ...? Sind das Offsets/Insets oer so etwas? Ich frage, weil ich gern so abstrakt wie möglich implementieren möchte und solche absoluten Werte ungern verwende. Lieber würd ich mir die Werte irgendwoher ermitteln, damit ich "zukunftssicher" bin.