Я пытаюсь создать «ярлык» с разными стилями для разных слов, вроде как описано здесь .Проблема в том, что, насколько я вижу, реализация UATextLayer в MonoTouch не допускает присваивания NSAttributedString свойству String, поскольку свойство String имеет строку типа.
Это ошибка в реализации или есть другой способ сделать это?
(Да, я знаю, что могу добавить отдельные метки - но я бы предпочел, чтобы, когда есть лучшее решение).
РЕДАКТИРОВАТЬ (в ответ на ответ Мигеля):
После изменения в GetHandler и исправления "void_objc_msgSend_IntPtr" вместо "void_objc_msgSend_IntPrt" код в ответе компилируется и запускается, но он все равно не работает (я все же довольно быстро пометил его как ответ).Нет ошибок, но текст не отображается.
Код:
string _text="Example string";
if(_textLayer==null) {
_textLayer = new CATextLayer();
_textLayer.Frame = new RectangleF(50,698,774,50);
_textLayer.Wrapped=true;
_textLayer.ForegroundColor=UIColor.White.CGColor;
_textLayer.BackgroundColor=UIColor.Clear.CGColor;
Layer.AddSublayer(_textLayer);
}
//_textLayer.String=_text;
CTFont _font=new CTFont("MarkerFelt-Thin",48);
CTStringAttributes _attrs=new CTStringAttributes();
_attrs.Font=_font;
_attrs.ForegroundColor = UIColor.White.CGColor;
var nsa = new NSAttributedString(_text);
Messaging.void_objc_msgSend_IntPtr(
_textLayer.Handle,
Selector.GetHandle("string"),
nsa.Handle);
Если я раскомментирую _textLayer.String=_text
, я вижу текст (но без атрибутов, конечно), поэтомупроблема не со слоем.