NSAttributedString
の境界矩形を計算し、その属性付き文字列をUITextView
に入れようとしています。私はテキストの上にUITextView
のサイズを設定したいと思います。私が手動で計算したい理由は、このUITextView
がUITableViewCell
にあり、セルの高さに自動次元を使用したくないからです。NSAttributedString文字ラップを使用したワードラップを使用したGetBoundingRect
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);
これはほとんどの場合動作します。しかし、それが失敗する特殊なケースがいくつかあります。この場合、私は3行に分割される文字列を持っています。
この
は
単語
包まれたように十分に長くなければならないいくつかのテスト文字列です。
したがって、GetBoundingRect
は、3行分の高さを返す必要があります。しかし、2行分の高さしか返しません。私が見つけたのは、文字をラップしてUITextViews
をラップするとすべてがうまくいくようです。だから私の文字列は、最後に次のようになります。
これは言葉 ラップするのに十分な長
EからBすべきいくつかのテスト文字列です。
attributedString.GetBoundingRect()
に文字の折り返しの代わりに語の折り返しを行う方法がわかりません。何か案は?