簡単に言うと、UIView.AddSubviewを使用してMonotouch.Dialog.ElementをUIViewに追加したいと思います。これを可能にするには、何を変更/作成する必要がありますか?
質問する
511 次
1 に答える
1
Aは、ではなく、にMonoTouch.Dialog.Element
基づいています。UITableViewCell
UIView
このため、Element
はaの一部である必要があり、単純にaUITableView
に追加することはできません。UIView
SubView
UIView
に似たものが必要なElement
場合は、から継承したカスタムビューを作成する必要がありますUIView
。このビューでは、選択したのView
内側から好きな動作を作成できます。UITableViewCell
Element
編集:MultiLineElementに基づく基本的な例
public class MyView : UIView
{
private string Caption { get; set; }
private string Text { get; set; }
public View(string caption, string text) : base()
{
Opaque = true;
BackgroundColor = UIColor.Clear;
Update(caption, text);
}
public void Update(string caption, string text)
{
Caption = caption;
Text = text;
SetNeedsDisplay();
}
public override void Draw(RectangleF frame)
{
var bounds = Bounds;
var captionFont = UIFont.BoldSystemFontOfSize(12f);
var textFont = UIFont.SystemFontOfSize(10f);
var width = Bounds.Width;
if (string.IsNullOrWhiteSpace(Caption) == false)
{
// Caption, black
UIColor.Black.SetColor();
width = Bounds.Width / 2;
var captionHeight =
StringSize(Caption, captionFont, width, UILineBreakMode.TailTruncation).Height;
var captionOffset = textFont.PointSize - captionFont.PointSize;
DrawString(Caption, new RectangleF(0, captionOffset, width, captionHeight),
captionFont, UILineBreakMode.TailTruncation, UITextAlignment.Right);
}
// Text, dark gray
UIColor.DarkGray.SetColor();
var textHeight =
StringSize(Text, textFont, width, UILineBreakMode.WordWrap).Height;
DrawString(Text, new RectangleF(Bounds.Width - width, 0, width, textHeight),
textFont, UILineBreakMode.WordWrap);
}
}
于 2013-02-18T20:49:01.657 に答える