diff --git a/src/Controls/src/Core/Handlers/Items2/ItemsViewHandler2.iOS.cs b/src/Controls/src/Core/Handlers/Items2/ItemsViewHandler2.iOS.cs index 3ab381d1ed8e..c8e8ed19df3d 100644 --- a/src/Controls/src/Core/Handlers/Items2/ItemsViewHandler2.iOS.cs +++ b/src/Controls/src/Core/Handlers/Items2/ItemsViewHandler2.iOS.cs @@ -108,6 +108,12 @@ public static void MapEmptyViewTemplate(ItemsViewHandler2 handler, I public static void MapFlowDirection(ItemsViewHandler2 handler, ItemsView itemsView) { handler.Controller?.UpdateFlowDirection(); + + // UIKit does not automatically mirror or reflow UICollectionView layouts when the flow direction + // (semanticContentAttribute) changes at runtime. To ensure correct RTL/LTR behavior, we explicitly + // notify the controller to rebuild or reassign its layout. Without this, UICollectionViewCompositionalLayout + // and other layouts will keep their previous geometry and ignore the new direction. + handler.UpdateLayout(); } public static void MapIsVisible(ItemsViewHandler2 handler, ItemsView itemsView) diff --git a/src/Controls/src/Core/Handlers/Items2/iOS/ItemsViewController2.cs b/src/Controls/src/Core/Handlers/Items2/iOS/ItemsViewController2.cs index 688bf7d0ae99..e042c118e9fa 100644 --- a/src/Controls/src/Core/Handlers/Items2/iOS/ItemsViewController2.cs +++ b/src/Controls/src/Core/Handlers/Items2/iOS/ItemsViewController2.cs @@ -312,6 +312,8 @@ public virtual void UpdateFlowDirection() } } } + + CollectionView.UpdateFlowDirection(ItemsView); } if (_emptyViewDisplayed) diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue32359.xaml b/src/Controls/tests/TestCases.HostApp/Issues/Issue32359.xaml new file mode 100644 index 000000000000..564680813799 --- /dev/null +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue32359.xaml @@ -0,0 +1,50 @@ + + + + +