Skip to content

Commit 8cccec6

Browse files
committed
Use propagation method
1 parent 68c1f82 commit 8cccec6

File tree

2 files changed

+10
-20
lines changed

2 files changed

+10
-20
lines changed

src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutContentRenderer.cs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ public class ShellFlyoutContentRenderer : UIViewController, IShellFlyoutContentR
1717
UIContainerView _headerView;
1818
UIContainerView _footerView;
1919
View _footer;
20-
View _header;
2120
ShellTableViewController _tableViewController;
2221
ShellFlyoutLayoutManager _shellFlyoutContentManager;
2322
UIView[] _uIViews;
@@ -97,18 +96,8 @@ void UpdateFlyoutHeader()
9796
_headerView.Dispose();
9897
}
9998

100-
if (_header is not null)
101-
{
102-
_header.MeasureInvalidated += OnHeaderMeasureInvalidated;
103-
}
104-
105-
_header = header;
106-
10799
if (header is not null)
108-
{
109100
_headerView = new ShellFlyoutHeaderContainer(((IShellController)_shellContext.Shell).FlyoutHeader);
110-
_header.MeasureInvalidated += OnHeaderMeasureInvalidated;
111-
}
112101
else
113102
_headerView = null;
114103

@@ -133,7 +122,6 @@ void UpdateFlyoutFooter(View view)
133122
var oldRenderer = (IPlatformViewHandler)_footer.Handler;
134123
var oldFooterView = _footerView;
135124
_tableViewController.FooterView = null;
136-
_footer.MeasureInvalidated -= OnFooterMeasureInvalidated;
137125
_footerView?.Disconnect();
138126
_footerView = null;
139127
_uIViews[FooterIndex] = null;
@@ -198,13 +186,6 @@ void AddViewInCorrectOrder(UIView newView, int previousIndex)
198186
View.AddSubview(newView);
199187
}
200188

201-
void OnHeaderMeasureInvalidated(object sender, System.EventArgs e)
202-
{
203-
var size = _headerView?.SizeThatFits(new CGSize(View.Frame.Width, double.PositiveInfinity));
204-
if (size is not null)
205-
_headerView.Frame = new CoreGraphics.CGRect(_headerView.Frame.X, _headerView.Frame.Y, size.Value.Width, size.Value.Height);
206-
}
207-
208189
void OnFooterMeasureInvalidated(object sender, System.EventArgs e)
209190
{
210191
ReMeasureFooter();

src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellFlyoutHeaderContainer.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#nullable disable
2+
using CoreGraphics;
23
using UIKit;
34

45
namespace Microsoft.Maui.Controls.Platform.Compatibility
56
{
6-
internal class ShellFlyoutHeaderContainer : UIContainerView
7+
internal class ShellFlyoutHeaderContainer : UIContainerView, IPlatformMeasureInvalidationController
78
{
89
Thickness _safearea = Thickness.Zero;
910

@@ -34,6 +35,14 @@ public override Thickness Margin
3435
}
3536
}
3637

38+
void IPlatformMeasureInvalidationController.InvalidateAncestorsMeasuresWhenMovedToWindow() { }
39+
40+
void IPlatformMeasureInvalidationController.InvalidateMeasure(bool isPropagating)
41+
{
42+
var size = SizeThatFits(new CGSize(Superview.Frame.Width, double.PositiveInfinity));
43+
Frame = new CGRect(Frame.X, Frame.Y, size.Width, size.Height);
44+
}
45+
3746
public override void LayoutSubviews()
3847
{
3948
if (!UpdateSafeAreaMargin())

0 commit comments

Comments
 (0)