MonoMobile.Views.BaseDialogViewSource.CreateHeaderView C# (CSharp) Method

CreateHeaderView() private method

private CreateHeaderView ( UITableView tableView, string caption ) : UIView
tableView UITableView
caption string
return UIView
		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;
		}