diff --git a/src/Controls/src/Core/Platform/iOS/Extensions/ButtonExtensions.cs b/src/Controls/src/Core/Platform/iOS/Extensions/ButtonExtensions.cs index 713103a886ca..1d38e3dff613 100644 --- a/src/Controls/src/Core/Platform/iOS/Extensions/ButtonExtensions.cs +++ b/src/Controls/src/Core/Platform/iOS/Extensions/ButtonExtensions.cs @@ -37,11 +37,17 @@ internal static CGRect GetTitleBoundingRect(this UIButton platformButton, double var availableSize = new CGSize(widthConstraint, availableHeight); var boundingRect = title.GetBoundingRect( + availableSize, + NSStringDrawingOptions.UsesLineFragmentOrigin | NSStringDrawingOptions.UsesFontLeading, + null); + + // The width is more accurate when using the device metrics but does not always return a usable height + var boundingRectWithDeviceMetrics = title.GetBoundingRect( availableSize, NSStringDrawingOptions.UsesLineFragmentOrigin | NSStringDrawingOptions.UsesFontLeading | NSStringDrawingOptions.UsesDeviceMetrics, null); - return new CGRect(boundingRect.Location, new CGSize(boundingRect.Width, Math.Min(availableHeight, boundingRect.Height))); + return new CGRect(boundingRectWithDeviceMetrics.Location, new CGSize(boundingRectWithDeviceMetrics.Width, Math.Min(availableHeight, boundingRect.Height))); } return CGRect.Empty;