diff --git a/packages/react-native/Libraries/Image/RCTImageView.mm b/packages/react-native/Libraries/Image/RCTImageView.mm index 3b3878fccb6..8cd0ec29df1 100644 --- a/packages/react-native/Libraries/Image/RCTImageView.mm +++ b/packages/react-native/Libraries/Image/RCTImageView.mm @@ -447,8 +447,8 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame) } else if ([self shouldReloadImageSourceAfterResize]) { CGSize imageSize = self.image.size; CGFloat imageScale = self.image.scale; - CGSize idealSize = - RCTTargetSize(imageSize, imageScale, frame.size, RCTScreenScale(), (RCTResizeMode)self.contentMode, YES); + CGSize idealSize = RCTTargetSize( + imageSize, imageScale, frame.size, RCTScreenScale(), RCTResizeModeFromUIViewContentMode(self.contentMode), YES); // Don't reload if the current image or target image size is close enough if (!RCTShouldReloadImageForSizeChange(imageSize, idealSize) || diff --git a/packages/react-native/Libraries/Image/RCTResizeMode.h b/packages/react-native/Libraries/Image/RCTResizeMode.h index 38d1f6e486e..148e3dd2fe9 100644 --- a/packages/react-native/Libraries/Image/RCTResizeMode.h +++ b/packages/react-native/Libraries/Image/RCTResizeMode.h @@ -15,6 +15,34 @@ typedef NS_ENUM(NSInteger, RCTResizeMode) { RCTResizeModeRepeat = -1, // Use negative values to avoid conflicts with iOS enum values. }; +static inline RCTResizeMode RCTResizeModeFromUIViewContentMode(UIViewContentMode mode) +{ + switch (mode) { + case UIViewContentModeScaleToFill: + return RCTResizeModeStretch; + break; + case UIViewContentModeScaleAspectFit: + return RCTResizeModeContain; + break; + case UIViewContentModeScaleAspectFill: + return RCTResizeModeCover; + break; + case UIViewContentModeCenter: + return RCTResizeModeCenter; + break; + case UIViewContentModeRedraw: + case UIViewContentModeTop: + case UIViewContentModeBottom: + case UIViewContentModeLeft: + case UIViewContentModeRight: + case UIViewContentModeTopLeft: + case UIViewContentModeTopRight: + case UIViewContentModeBottomLeft: + case UIViewContentModeBottomRight: + return RCTResizeModeRepeat; + } +}; + @interface RCTConvert (RCTResizeMode) + (RCTResizeMode)RCTResizeMode:(id)json;