UITextView NSAttributedString-Größe

8

Ich arbeite an einer App, die eine UITextView verwendet.

Der UITextView sollte vertikal oder horizontal wachsen oder schrumpfen, damit er in den Text passt. Um dies zu tun, überschreibe ich sizeToFit in einer Unterklasse und setze die Grenzen wie folgt:

%Vor%

Das Problem ist, dass diese Größe nicht die korrekte Größe der Zeichenfolge widerspiegelt, da UITextView den Text schneidet. Ich setze die Kanteneinsätze auf Null, also sollte das kein Problem sein, oder?

An dieser Stelle denke ich, dass es ein Fehler mit der size-Eigenschaft von NSAttributedString ist, aber dasselbe passiert, wenn ich boundingRectWithSize verwende: options: context:

%Vor%

Vielleicht funktioniert der Code, der Layout-Berechnungen für NSAttributedString ausführt, nicht gut mit den Layoutberechnungen von UITextView.

Hier ist ein Beispielprojekt, das das Problem demonstriert .

Irgendwelche Ideen sind willkommen!

BEARBEITEN: Ich sollte auch darauf hinweisen, dass das Folgende auch nicht funktioniert:

%Vor%     
Tom Irving 27.01.2013, 06:42
quelle

3 Antworten

3

Obwohl nicht perfekt, endete ich mit:

%Vor%     
Tom Irving 17.07.2013, 21:46
quelle
0

Ich denke, Sie haben recht - ich konnte -[NSAttributedString boundingRectWithSize:options:context: ] nicht dazu bringen, einen Wert zurückzugeben, der für alle Schriftgrößen korrekt funktioniert ...

Ich habe jedoch ein UILabel erhalten, um attributierte Strings korrekt zu skalieren und zu zeichnen:

  • Ändern Sie Ihre Textansichtsklasse in UILabel
  • verwende -setAttributedText: auf dem Label
  • set label.numberOfLines = 0 (mehrzeilig)
  • in -layoutSubviews des Superview-Aufrufs Ihres Labels - [label sizeThatFits:], um die richtige Größe für das Label zu erhalten ....

Arbeitete für mich ...

EDIT: Hier ist meine ViewController.m Datei:

%Vor%     
nielsbot 27.01.2013 11:41
quelle
0

swift 3 Lösung für Tom Irvings Lösung oben:

%Vor%     
tungsten 22.01.2017 22:52
quelle