Xamarin.ios MonoTouch中带有AttributedString的CATextlayer

Xamarin.ios MonoTouch中带有AttributedString的CATextlayer,xamarin.ios,nsattributedstring,catextlayer,Xamarin.ios,Nsattributedstring,Catextlayer,我正在尝试创建一个“标签”,在不同的单词上使用不同的样式,有点像上面描述的那样。 问题是——据我所知——AbutextLayer的MonoTouch实现不接受将NSAttributedString分配给String属性,因为String属性具有String类型 这是实现中的一个错误还是有其他方法可以做到这一点 (是的,我知道我可以添加单独的标签,但如果有更好的解决方案,我宁愿不添加) 编辑(回应米格尔的回答): 在更改为GetHandler并更正为“void_objc_msgSend_IntPt

我正在尝试创建一个“标签”,在不同的单词上使用不同的样式,有点像上面描述的那样。 问题是——据我所知——AbutextLayer的MonoTouch实现不接受将NSAttributedString分配给String属性,因为String属性具有String类型

这是实现中的一个错误还是有其他方法可以做到这一点

(是的,我知道我可以添加单独的标签,但如果有更好的解决方案,我宁愿不添加)

编辑(回应米格尔的回答):

在更改为GetHandler并更正为“void_objc_msgSend_IntPtr”而不是“void_objc_msgSend_IntPrt”后,答案中的代码将编译并运行,但无论如何它都不太管用(我将其标记为答案时有点快)。 不会抛出错误,但不会显示文本

代码:

如果我取消注释
\u textLayer.String=\u text
我会看到文本(当然没有属性),因此问题不在于层。

现在,您可以尝试:

using MonoTouch.ObjCRuntime;

var caTextLayer = new CATextLayer ();
var nsa = new NSAttributedString ();
[..]
Messaging.void_objc_msgSend_IntPrt (
    caTextLayer.Handle, 
    Selector.sel_registerName ("string"), 
    nsa.Handle);
或者,您可以下载即将发布的版本的预览:

http://tirania.org/tmp/monotouch.dll

它在CATextLayer中实现了一个属性AttributedString,您可以对其进行设置。

似乎sel_registerName是私有的,无法从另一个类调用,我是否遗漏了什么?…我发现自己:Selector.GetHandle(“string”)
http://tirania.org/tmp/monotouch.dll