1

件名はそれをすべて言っているので、コードを表示した後にコメントします:

        var attr = new CTStringAttributes ();
        attr.Font = new CTFont("Parangon110C", 11);

        var paragraph = new CTParagraphStyleSettings ();
        paragraph.Alignment = CTTextAlignment.Justified;
        attr.ParagraphStyle = new CTParagraphStyle(paragraph);

        DescLabel.AttributedText = new NSAttributedString(billboard.Desc, attr);

このコードを実行した後、例外が発生します

Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: -[__NSCFType lineBreakMode]: unrecognized selector sent to instance 0xe5a4db0

attr.ParagraphStyle を設定したときにのみ表示されることがわかりました。しかし、それがnullの場合、すべて問題ありません(ただし、テキストを自分の方法でフォーマットすることはできません笑)。文字列を実行した後

DescLabel.AttributedText = new NSAttributedString(billboard.Desc, attr);

デバッガーは、DescLabel.AttributedText の Size プロパティに例外テキストを表示します。

これは CTStringAttributes または CTParagraphStyle のバグだと思います。そこにCoreText リポジトリが見つかりましたが、今まで何が問題だったのかわかりません

また、少し後に、誰かが自分のものが機能していないと訴えているバグレポートを見つけました。しかし、コードの明らかなエラーを修正した後 (幸運な人)、彼はもうコメントしていません。しかし、彼のコードは私のものと似ています..

これを解決するか、回避策を見つけるのを手伝ってください。(UIParagraphStyle も機能していません。UIParagraphStyleSettings.LineBreakMode セッターが実装されていないと表示されます)

4

1 に答える 1

3

どうやら IOS 6 以降では、CoreText CTParagraphStyle の代わりに UIKits NSParagraphStyle を使用する必要があります。

var parstyle = new MonoTouch.UIKit.NSMutableParagraphStyle ();
parstyle.Alignment = MonoTouch.UIKit.UITextAlignment.Justified;
var att = new NSMutableAttributedString (billboard.Desc);
att.AddAttribute (
    MonoTouch.UIKit.UIStringAttributeKey.ParagraphStyle,
    parstyle,
    new NSRange (0, att.Length)
);
att.AddAttribute (
    MonoTouch.UIKit.UIStringAttributeKey.Font,
    MonoTouch.UIKit.UIFont.FromName ("Parangon110C", 11),
    new NSRange (0, att.Length)
    );
DescLabel.AttributedText = att;

これを行うための NSAttributedString の便利なコンストラクターもあります。

var parstyle = new MonoTouch.UIKit.NSMutableParagraphStyle ();
parstyle.Alignment = MonoTouch.UIKit.UITextAlignment.Justified;

DescLabel.AttributedText = new NSAttributedString (
                str: billboard.Desc,
                font: MonoTouch.UIKit.UIFont.FromName ("Parangon110C", 11),
                paragraphStyle: parstyle);
于 2013-10-16T09:50:45.280 に答える