private UIView CreateHeaderView(UITableView tableView, string caption)
{
var indentation = UIDevice.CurrentDevice.GetIndentation();
var width = tableView.Bounds.Width - (indentation - 10);
var headerLabel = new UILabel() { Font = UIFont.BoldSystemFontOfSize(UIFont.LabelFontSize) };
var size = headerLabel.StringSize(caption, headerLabel.Font);
var height = (float)Math.Floor((float)(size.Height * (headerLabel.Font.NumberOfLines(caption, width) + 0.5)));
var frame = new RectangleF(tableView.Bounds.X + (indentation + 10), 0, width, height);
headerLabel.Frame = frame;
headerLabel.TextColor = UIColor.FromRGB(76, 86, 108);
headerLabel.ShadowColor = UIColor.White;
headerLabel.LineBreakMode = UILineBreakMode.WordWrap;
headerLabel.ShadowOffset = new SizeF(0, 1);
headerLabel.Text = caption;
headerLabel.Lines = headerLabel.Font.NumberOfLines(caption, frame.Width);
var view = new UIView(new RectangleF(0, 0, frame.Width, height));
if (tableView.Style == UITableViewStyle.Grouped)
{
headerLabel.BackgroundColor = UIColor.Clear;
view.Opaque = false;
}
else
{
var background = Controller.Theme.HeaderBackgroundColor;
if (background != null)
{
headerLabel.BackgroundColor = background;
}
}
view.BackgroundColor = headerLabel.BackgroundColor;
if (Controller.Theme != null)
{
headerLabel.TextAlignment = Controller.Theme.HeaderTextAlignment;
if (Controller.Theme.HeaderTextColor != null)
headerLabel.TextColor = Controller.Theme.HeaderTextColor;
if (Controller.Theme.HeaderTextShadowColor != null)
headerLabel.ShadowColor = Controller.Theme.HeaderTextShadowColor;
headerLabel.ShadowOffset = Controller.Theme.HeaderTextShadowOffset;
}
view.AddSubview(headerLabel);
return view;
}