diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/SliderShouldChangeThumbImageAndResetIt.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/SliderShouldChangeThumbImageAndResetIt.png new file mode 100644 index 000000000000..4b102b24223d Binary files /dev/null and b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios-26/SliderShouldChangeThumbImageAndResetIt.png differ diff --git a/src/Core/src/Platform/iOS/SliderExtensions.cs b/src/Core/src/Platform/iOS/SliderExtensions.cs index e2be1be23f73..b8cf380bc406 100644 --- a/src/Core/src/Platform/iOS/SliderExtensions.cs +++ b/src/Core/src/Platform/iOS/SliderExtensions.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using ObjCRuntime; using UIKit; @@ -73,6 +74,13 @@ public static async Task UpdateThumbImageSourceAsync(this UISlider uiSlider, ISl uiSlider.SetThumbImage(null, UIControlState.Normal); uiSlider.UpdateThumbColor(slider); } + + // On iOS 26+, SetThumbImage() no longer triggers a layout pass that recalculates + // the thumb position at runtime. Explicitly call SetNeedsLayout() to restore this. + if (OperatingSystem.IsIOSVersionAtLeast(26)) + { + uiSlider.SetNeedsLayout(); + } } } } \ No newline at end of file