ここで説明するような、さまざまな単語にさまざまなスタイルの「ラベル」を作成しようとしています。問題は、私が見る限り、UATextLayerのMonoTouch実装は、Stringプロパティのタイプがstringであるため、NSAttributedStringをStringプロパティに割り当てることを受け入れないことです。
これは実装のエラーですか、それともこれを行う別の方法がありますか?
(はい、個別のラベルを追加できることは承知していますが、より良い解決策がある場合は追加したくありません)。
編集(ミゲルからの回答に応じて):
GetHandlerに変更し、「void_objc_msgSend_IntPrt」ではなく「void_objc_msgSend_IntPtr」に修正した後、回答のコードはコンパイルされて実行されますが、とにかくうまくいきません(回答としてマークするのが少し速かったです)。エラーはスローされませんが、テキストは表示されません。
コード:
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
テキストが表示されます(もちろん属性はありません)ので、問題はレイヤーにありません。