2013-10-15 53 views
0

主题说,这一切的时候,所以呈现出的代码后,我会评论:lineBreakMode:在MonoTouch中无法识别的选择异常设定ParagraphStyle

 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时出现。但是当它为空时,一切都可以(除非我无法让文本格式化,我的方式大声笑)。 执行字符串后

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

调试器显示DescLabel.AttributedText的Size属性的异常文本。

我怀疑,这是CTStringAttributes或CTParagraphStyle的错误。 我找到有CoreText repository但不能说有什么错至今

也,过了一会儿,我发现一个bugreport如果有人投诉他的东西不工作。但在纠正了代码中的一个明显错误(幸运人物)之后,他不再评论,所以得出的结论是:他有这个工作。 但他的代码是类似地雷..

请帮我解决这个或找到解决方法。 (UIParagraphStyle不工作或者,它说,UIParagraphStyleSettings.LineBreakMode二传手未实现)从IOS 6

+0

你指向是苹果机,勿MonoTouch的来源,但是这不是很重要。 –

回答

2

显然,并向上你必须使用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); 
+0

好的,谢谢,我最终想出了这段代码,因为autocompletion能够以这种最好的方式工作,并且它对我的口味更具可读性。 \t \t \t parstyle.Alignment = UITextAlignment.Center; \t \t \t attr.ParagraphStyle = parstyle; \t \t \t DescLabel.AttributedText =新NSAttributedString(billboard.Desc,ATTR); 我complainting的错误后,这样做[中确认(https://bugzilla.xamarin.com/show_bug.cgi?id=15402)。我会将你的评论标记为答案,以防人们陷入同样的​​问题。干杯! –

+0

我希望这个问题记录无论如何。事实上,我现在可以看到它,但实际上并没有让我意识到这一点。合理的对齐方式不起作用。左,右,中心正在工作。但文字根本没有道理。可能是苹果意味着他们自己的东西时使用这个术语..(抱歉不能赞成你的评论,太低的声誉^^) –

相关问题