Я пытаюсь создать «ярлык» с разными стилями для разных слов, вроде как описано here. Проблема - насколько я вижу, реализация MonotTouch UATextLayer не позволяет присваивать NSAttributedString свойство String, поскольку свойство String имеет строку типа.CATextlayer с AttributedString в MonoTouch
Это ошибка в реализации или есть другой способ сделать это?
(Да, я знаю, что могу добавить отдельные ярлыки, но я бы предпочел, чтобы не было лучшего решения).
EDIT (в ответ на ответ от Miguel):
После изменения в 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
я вижу текст (но без атрибутов, конечно), так что проблема не с слоя.
Кажется, sel_registerName является частным и не может быть вызван из другого класса, я чего-то не хватает ...? – Johan
... Я сам узнал: Selector.GetHandle («string») – Johan
Отредактировал мой вопрос для дальнейшей помощи, так как я не совсем понял, как это работает ... – Johan