1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
using AppKit;
using CoreGraphics;
using Foundation;
namespace Xamarin.Forms.Platform.MacOS
{
sealed class CustomNSTableHeaderView : NSTableHeaderView
{
public CustomNSTableHeaderView() : this(0, null) { }
public CustomNSTableHeaderView(double width, IVisualElementRenderer headerRenderer)
{
var view = new NSView { WantsLayer = true, Layer = { BackgroundColor = NSColor.Clear.CGColor } };
AddSubview(view);
Update(width, headerRenderer);
}
public void Update(double width, IVisualElementRenderer headerRenderer)
{
double height = 1;
if (headerRenderer != null)
{
var headerView = headerRenderer.Element;
var request = headerView.Measure(double.PositiveInfinity, double.PositiveInfinity, MeasureFlags.IncludeMargins);
height = request.Request.Height;
var bounds = new Rectangle(0, 0, width, height);
Xamarin.Forms.Layout.LayoutChildIntoBoundingRegion(headerView, bounds);
headerRenderer.NativeView.Frame = bounds.ToRectangleF();
AddSubview(headerRenderer.NativeView);
}
Frame = new CGRect(0, 0, width, height);
}
//hides default text field
public override NSAttributedString PageHeader => new NSAttributedString("");
public override void DrawRect(CGRect dirtyRect) { }
public override void Layout()
{
foreach (var view in Subviews)
view.Frame = Frame;
base.Layout();
}
}
}
|