Wenn ich eine TextView mit Ausschlusspfaden in einer UITableViewCell
habe, wie kann ich die Höhe der Zelle für eine gegebene Zeichenfolge berechnen?Berechnen der Zellenhöhe für TextView mit Ausschlusspfaden
7
A
Antwort
17
Ich fand eine Lösung, von der ich denke, dass sie anderen helfen könnte. Da die Erstellung eines neuen NSTextContainer-, NSLayoutManager- und NSTextStorage-Objekts, das bereits als Teil von UITextView instanziiert ist, nicht erforderlich ist, vermute ich, dass es effizienter wäre.
Um die Größe eines UITextView zu berechnen, die Ausschlüsse Pfade und NSAttributedString verwendet, kann man folgendes tun:
// Assuming something like this...
UIBezierPath * exclusionPath = [UIBezierPath bezierPathWithRect:someRect];
self.textView.textContainer.exclusionPaths = @[exclusionPath];
NSAttributedString * attributedString = ...
self.textView.attributedString = attributedString;
...
// Use text container, layout manager, and text storage associated with the text view.
NSTextContainer * textContainer = self.textView.textContainer;
NSLayoutManager * layoutManager = textContainer.layoutManager;
NSTextStorage * textStorage = layoutManager.textStorage;
// Limit the width or height. In this case, limiting the width to 280.
textContainer.size = CGSizeMake(280.0, FLT_MAX);
[textStorage setAttributedString:attributedString];
// Because the layout manager performs layout lazily, on demand, you must force it to lay out the text, even though you don’t need the glyph range returned by this function.
[layoutManager glyphRangeForTextContainer:textContainer];
// Ask the layout manager for the height of the rectangle occupied by the laid-out text
CGFloat height = [layoutManager usedRectForTextContainer:textContainer].size.height;
3
mit textContainer
und layoutManager
Eigentlich brauchen Sie nicht zu spielen. Das funktioniert für mich.
UIBezierPath *exclusionPath = [UIBezierPath bezierPathWithRect:imageViewFrame];
UITextView *tempTextView = [[UITextView alloc] init];
[tempTextView setFont:font];
tempTextView.textContainer.exclusionPaths = @[exclusionPath];
[tempTextView.textStorage replaceCharactersInRange:NSMakeRange(0, [tempTextView.text length]) withString:text];
CGRect textViewFrame = [tempTextView frame];
textViewFrame.size.height = [tempTextView sizeThatFits:CGSizeMake(290, FLT_MAX)].height;
return textViewFrame.size.height;
Verwandte Themen
- 1. Ändern der Zellenhöhe durch den Inhalt der TextView in der Zelle
- 2. Wie dynamische Zellenhöhe mit Parse?
- 3. Dynamische Tabellenansicht Zellenhöhe für iOS 7
- 4. Abrufen der benutzerdefinierten Prototyp-Zellenhöhe vom Storyboard?
- 5. Ändern der Zellenhöhe beim Scrollen eines UITableView
- 6. Scrollen in Listenansicht mit unterschiedlicher Zellenhöhe
- 7. Aktuelle Zellenhöhe innerhalb des heightForRowAtIndexPath?
- 8. Auto-Layout: Hole UIImageView-Höhe, um die Zellenhöhe korrekt zu berechnen
- 9. SyntaxHighlighter für android TextView
- 10. HTML-Formatierung für TextView
- 11. Ändern der Zellenhöhe in der Tabellenansicht Ziel C
- 12. TextView für statische TableViewCell
- 13. Setze Deckkraft für TextView
- 14. Berechnen der Jacobi mit der Eigenen Bibliothek
- 15. Schrifttyp für Ansichtshalter TextView mit Dagger2 DI
- 16. Spiegeln der TextView horizontal
- 17. Wie kann ich die Gesamtzahl der Wörter und Zeichen in textView berechnen?
- 18. Aktualisierung der Zellenhöhe nach dem Herunterladen von Bildern
- 19. Berechnen der Speicheranforderungen für SQL-Server CE
- 20. Berechnen von Linien mit der besten Anpassung für eine Ellipse
- 21. Wie erhöhen Sie gleichzeitig die Zellenhöhe und Unteransichtshöhe mit Animation?
- 22. Zeilenhöhe für HSSFRow berechnen
- 23. Android TextView measureText für Arabisch
- 24. GridView mit TextView in LinearLayout
- 25. Zwei benutzerdefinierte Tabellenansicht Zellenhöhe auf der Grundlage des Inhalts
- 26. tableView Zellenhöhe ... wie man es anfertigt?
- 27. übersetzbar auf Android für TextView
- 28. Schnelle adaptive Zellenhöhe in statischer Tabellenansicht
- 29. Reset-Code für EditText und TextView für Android
- 30. Wie ändert man UICollectionview Zellenhöhe dynamisch?
Fast perfekt arbeiten. Ich musste +1 zur Höhe hinzufügen, um richtig zu arbeiten, weiß nicht warum :) –