lineBreakMode:设置段落样式时,MonoTouch中无法识别的选择器异常
本文关键字:识别 异常 选择器 MonoTouch 设置 段落 样式 lineBreakMode | 更新日期: 2023-09-27 18:35:30
>主题说明了一切,所以我将在显示代码后发表评论:
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 时出现。段落样式。但是当它为空时,一切都很好(除了我无法按照我的方式格式化文本,哈哈)。执行字符串后
DescLabel.AttributedText = new NSAttributedString(billboard.Desc, attr);
调试器在 DescLabel.AttributedText 的 Size 属性中显示异常文本。
我怀疑,这是CTStringAttributes或CTParagraphStyle中的一个错误。我已经在那里找到了 CoreText 存储库,但直到现在还不能说出了什么问题
另外,不久之后,我发现了一个错误报告,有人抱怨他的东西不起作用。 但是在纠正了代码中的一个明显错误(幸运的家伙)之后,他不再发表评论了,所以结论是:他已经完成了这项工作。但他的代码与我的代码相似。
请帮助我解决此问题或找到解决方法。(UIParagraphStyle 也不起作用,它说 UIParagraphStyleSettings.LineBreakMode setter 未实现)
显然
从IOS 6及更高版本开始,您必须为此使用UIKits NSParagraphStyle而不是CoreText CTParagraphStyle
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);