From 9a094565326de127e7925bd9564707e63820a7ab Mon Sep 17 00:00:00 2001 From: IjzerenHein Date: Fri, 4 Mar 2016 11:59:39 +0100 Subject: [PATCH] [add] Image: support `resizeMode` style --- src/components/Image/ImageStylePropTypes.js | 2 ++ src/components/Image/index.js | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/Image/ImageStylePropTypes.js b/src/components/Image/ImageStylePropTypes.js index 79aedfb2..d44c0cb6 100644 --- a/src/components/Image/ImageStylePropTypes.js +++ b/src/components/Image/ImageStylePropTypes.js @@ -2,6 +2,7 @@ import { PropTypes } from 'react' import ColorPropType from '../../apis/StyleSheet/ColorPropType' import LayoutPropTypes from '../../apis/StyleSheet/LayoutPropTypes' import TransformPropTypes from '../../apis/StyleSheet/TransformPropTypes' +import ImageResizeMode from './ImageResizeMode' const hiddenOrVisible = PropTypes.oneOf([ 'hidden', 'visible' ]) @@ -10,6 +11,7 @@ export default { ...TransformPropTypes, backfaceVisibility: hiddenOrVisible, backgroundColor: ColorPropType, + resizeMode: PropTypes.oneOf(Object.keys(ImageResizeMode)), /** * @platform web */ diff --git a/src/components/Image/index.js b/src/components/Image/index.js index f6198a01..e1cbfcd3 100644 --- a/src/components/Image/index.js +++ b/src/components/Image/index.js @@ -1,10 +1,10 @@ /* global window */ import { NativeMethodsDecorator } from '../../modules/NativeMethodsMixin' -import StyleSheet from '../../apis/StyleSheet' import CoreComponent from '../CoreComponent' import ImageResizeMode from './ImageResizeMode' import ImageStylePropTypes from './ImageStylePropTypes' import React, { Component, PropTypes } from 'react' +import StyleSheet from '../../apis/StyleSheet' import StyleSheetPropType from '../../apis/StyleSheet/StyleSheetPropType' import View from '../View' @@ -34,8 +34,8 @@ export default class Image extends Component { static defaultProps = { accessible: true, defaultSource: {}, - resizeMode: 'cover', - source: {} + source: {}, + style: {} }; static resizeMode = ImageResizeMode; @@ -130,9 +130,7 @@ export default class Image extends Component { accessible, children, defaultSource, - resizeMode, source, - style, testID } = this.props @@ -140,6 +138,11 @@ export default class Image extends Component { const defaultImage = defaultSource.uri || null const displayImage = !isLoaded ? defaultImage : source.uri const backgroundImage = displayImage ? `url("${displayImage}")` : null + const style = StyleSheet.flatten(this.props.style) + + const resizeMode = this.props.resizeMode || style.resizeMode || ImageResizeMode.cover + // remove resizeMode style, as it is not supported by View + delete style.resizeMode /** * Image is a non-stretching View. The image is displayed as a background