diff --git a/src/Core/src/Platform/iOS/IPlatformMeasureInvalidationController.cs b/src/Core/src/Platform/iOS/IPlatformMeasureInvalidationController.cs
index 5b41012335c0..d95ebd82ac84 100644
--- a/src/Core/src/Platform/iOS/IPlatformMeasureInvalidationController.cs
+++ b/src/Core/src/Platform/iOS/IPlatformMeasureInvalidationController.cs
@@ -1,7 +1,20 @@
namespace Microsoft.Maui.Platform;
-internal interface IPlatformMeasureInvalidationController
+///
+/// Provides platform-specific measure invalidation control for iOS views.
+///
+public interface IPlatformMeasureInvalidationController
{
+ ///
+ /// Schedules measure invalidation to occur when the view is moved to a window.
+ /// This is used to handle scenarios where invalidation is attempted before the view is attached to a window.
+ ///
void InvalidateAncestorsMeasuresWhenMovedToWindow();
+
+ ///
+ /// Invalidates the current view via SetNeedsLayout and returns whether to continue propagating the invalidation to ancestors or not.
+ ///
+ /// True if this invalidation is being propagated from a descendant view, false if this is the initial view that triggered the invalidation.
+ /// True to continue propagating invalidation to ancestor views, false to stop propagation.
bool InvalidateMeasure(bool isPropagating = false);
}
\ No newline at end of file
diff --git a/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt
index ca4e784fc56f..e686f2261828 100644
--- a/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt
@@ -1,4 +1,8 @@
-#nullable enable
+#nullable enable
+Microsoft.Maui.Platform.IPlatformMeasureInvalidationController
+Microsoft.Maui.Platform.IPlatformMeasureInvalidationController.InvalidateAncestorsMeasuresWhenMovedToWindow() -> void
+Microsoft.Maui.Platform.IPlatformMeasureInvalidationController.InvalidateMeasure(bool isPropagating = false) -> bool
+virtual Microsoft.Maui.Animations.Lerp.LerpDelegate.Invoke(object! start, object! end, double progress) -> object!
Microsoft.Maui.Converters.SafeAreaEdgesTypeConverter
Microsoft.Maui.Converters.SafeAreaEdgesTypeConverter.SafeAreaEdgesTypeConverter() -> void
Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate.ContextFlyoutItemHandlerUpdate(Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate! original) -> void
@@ -223,7 +227,6 @@ static Microsoft.Maui.SwipeViewSwipeEnded.operator !=(Microsoft.Maui.SwipeViewSw
static Microsoft.Maui.SwipeViewSwipeEnded.operator ==(Microsoft.Maui.SwipeViewSwipeEnded? left, Microsoft.Maui.SwipeViewSwipeEnded? right) -> bool
static Microsoft.Maui.SwipeViewSwipeStarted.operator !=(Microsoft.Maui.SwipeViewSwipeStarted? left, Microsoft.Maui.SwipeViewSwipeStarted? right) -> bool
static Microsoft.Maui.SwipeViewSwipeStarted.operator ==(Microsoft.Maui.SwipeViewSwipeStarted? left, Microsoft.Maui.SwipeViewSwipeStarted? right) -> bool
-virtual Microsoft.Maui.Animations.Lerp.LerpDelegate.Invoke(object! start, object! end, double progress) -> object!
virtual Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate.$() -> Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate!
virtual Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate.EqualityContract.get -> System.Type!
virtual Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate.Equals(Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate? other) -> bool
diff --git a/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
index 1fe30abd2aa9..665bf2f16d47 100644
--- a/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
@@ -1,4 +1,8 @@
-#nullable enable
+#nullable enable
+Microsoft.Maui.Platform.IPlatformMeasureInvalidationController
+Microsoft.Maui.Platform.IPlatformMeasureInvalidationController.InvalidateAncestorsMeasuresWhenMovedToWindow() -> void
+Microsoft.Maui.Platform.IPlatformMeasureInvalidationController.InvalidateMeasure(bool isPropagating = false) -> bool
+virtual Microsoft.Maui.Animations.Lerp.LerpDelegate.Invoke(object! start, object! end, double progress) -> object!
Microsoft.Maui.Converters.SafeAreaEdgesTypeConverter
Microsoft.Maui.Converters.SafeAreaEdgesTypeConverter.SafeAreaEdgesTypeConverter() -> void
Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate.ContextFlyoutItemHandlerUpdate(Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate! original) -> void
@@ -226,7 +230,6 @@ static Microsoft.Maui.SwipeViewSwipeEnded.operator !=(Microsoft.Maui.SwipeViewSw
static Microsoft.Maui.SwipeViewSwipeEnded.operator ==(Microsoft.Maui.SwipeViewSwipeEnded? left, Microsoft.Maui.SwipeViewSwipeEnded? right) -> bool
static Microsoft.Maui.SwipeViewSwipeStarted.operator !=(Microsoft.Maui.SwipeViewSwipeStarted? left, Microsoft.Maui.SwipeViewSwipeStarted? right) -> bool
static Microsoft.Maui.SwipeViewSwipeStarted.operator ==(Microsoft.Maui.SwipeViewSwipeStarted? left, Microsoft.Maui.SwipeViewSwipeStarted? right) -> bool
-virtual Microsoft.Maui.Animations.Lerp.LerpDelegate.Invoke(object! start, object! end, double progress) -> object!
virtual Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate.$() -> Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate!
virtual Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate.EqualityContract.get -> System.Type!
virtual Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate.Equals(Microsoft.Maui.Handlers.ContextFlyoutItemHandlerUpdate? other) -> bool