Jeśli mam TextView ze ścieżkami wykluczeń w UITableViewCell
, w jaki sposób mogę obliczyć wysokość komórki dla danego ciągu?Oblicz wysokość komórki dla TextView ze ścieżkami wykluczeń
7
A
Odpowiedz
17
Znalazłem rozwiązanie, które może być pomocne dla innych. Ponieważ nie wymaga on tworzenia nowego obiektu NSTextContainer, NSLayoutManager i NSTextStorage, które są już tworzone jako część UITextView, podejrzewam, że byłby bardziej wydajny.
Aby obliczyć rozmiar UITextView, który używa wykluczeniach ścieżki i NSAttributedString, można wykonać następujące czynności:
// 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
Właściwie nie trzeba grać z textContainer
i layoutManager
. To działa dla mnie.
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;
Powiązane problemy
- 1. Uzyskaj wysokość obiektu TextView
- 2. Bieżąca wysokość komórki w wysokościForRowAtIndexPath?
- 3. Swift Dynamiczna wysokość komórki tabeli
- 4. domyślny UITableView komórki automatyczna wysokość
- 5. Jak używać cscope ze ścieżkami zawierającymi spacje
- 6. Praca ze względnymi ścieżkami plików w .Net
- 7. ścieżka względna nie działa ze ścieżkami
- 8. CATransform3D: Oblicz wysokość po transformacji perspektywy
- 9. Stała wysokość komórki tabeli bez względu na zawartość komórki
- 10. Jak zwiększyć wysokość komórki i wysokość podglądu jednocześnie z animacją?
- 11. Pobrać niestandardową wysokość komórki prototypu z storyboardu?
- 12. Zmień wysokość komórki według zawartości tekstu Wyświetl wewnątrz komórki
- 13. Okno dialogowe MonoTouch StringElements Zmienna wysokość komórki
- 14. iOS obliczyć wysokość tekstu w tableView komórki
- 15. Radzenie sobie z problemami ze ścieżkami z PHPUnit
- 16. Po "następnym" łączu ze ścieżkami względnymi przy użyciu rvest
- 17. Importowanie Subversion do GIT: problem ze ścieżkami podrzędnymi
- 18. Rozszerzenie Imagick PHP 5.4 nie działa ze względnymi ścieżkami. (Windows)
- 19. Ścieżka bezwzględna w ścieżce względnej ze ścieżkami względnymi
- 20. Oblicz szerokość i wysokość Flv i Swf za pomocą C#
- 21. Oblicz rangi dla każdej grupy
- 22. Różnice między ścieżkami klas i ścieżkami źródłowymi javac
- 23. Dynamicznie ustawić szerokość i wysokość TextView w systemie Android
- 24. Jak dynamicznie zmieniać wysokość ImageView Wysokość
- 25. Ripples z obramowaniem dla TextView?
- 26. Spannable na Androidzie dla textView
- 27. Ustaw wielkie litery dla TextView
- 28. Jak określić wiele filtrów wykluczeń w --gtest_filter?
- 29. programowo excel komórki być szerokość i wysokość Aut.dop
- 30. Jak znaleźć największą wysokość komórki tabeli za pomocą jQuery?
Działa prawie idealnie. Musiałem dodać +1 do wzrostu, aby działało poprawnie, nie wiem dlaczego :) –