Ich versuche, die Begrenzung rect für eine NSAttributedString
zu berechnen und dann diese attributierte Zeichenfolge in eine UITextView
. Ich möchte die UITextView
Basis auf den Text zu dimensionieren. Der Grund, den ich manuell berechnen möchte, ist, weil dieses UITextView
in einem UITableViewCell
ist und ich nicht automatische Dimension auf meinen Zellenhöhen verwenden möchte.NSAttributedString GetBoundingRect mit Zeichenumbruch nicht Wortumbruch
string myString = "This is some test string that should be long enough to be word wrapped";
var boldAttributes = new UIStringAttributes();
boldAttributes.ForegroundColor = UIColor.Black;
boldAttributes.Font = AppDelegate.SegoeUIBold.WithSize (14);
var attributedString = new NSMutableAttributedString (myString, boldAttributes);
var rect = attributedString.GetBoundingRect(new CGSize(UIScreen.MainScreen.Bounds.Width - 16, 10000), NSStringDrawingOptions.UsesFontLeading|NSStringDrawingOptions.UsesLineFragmentOrigin, null);
var height = Math.Ceiling(rect.Height);
Dies funktioniert die meiste Zeit. Es gibt jedoch einige spezielle Fälle, in denen dies fehlschlägt. In diesem Fall habe ich eine Textzeile, die in 3 Zeilen aufgeteilt wird.
Dies ist einiger Test-String,
sollte lang genug sein Wort
gewickelt zu sein.
Also meine GetBoundingRect
sollte eine Höhe groß genug für 3 Zeilen zurückgeben. Aber es gibt nur eine Höhe zurück, die groß genug für 2 Zeilen ist. Ich habe festgestellt, dass, wenn ich die UITextViews
Verpackung in die Zeichenverpackung ändern scheint alles gut zu funktionieren. So sieht meine Zeichenfolge wie folgt am Ende:
Dies ist einige Test-String,
e lang genug b sollte Wort gewickelt zu sein.
Ich kann nicht herausfinden, wie attributedString.GetBoundingRect()
zu Word-Wrapping statt Zeichenumbruch zu bekommen. Irgendwelche Ideen?