-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incorrect Image top/bottom alignment xMidYMin/xMidYMax between same iOS/Android SVG #1138
Incorrect Image top/bottom alignment xMidYMin/xMidYMax between same iOS/Android SVG #1138
Comments
Can you make a complete reproduction? |
In my app I have dynamic code for images, a lot of code is needed to paste here. |
@msand Done, please check import React from 'react';
import { View } from 'react-native';
import Svg, { G, Image, Rect } from 'react-native-svg';
const App = () => {
return (
<View style={{ flex: 1, backgroundColor: 'orange' }}>
<Svg width="100%" height="600" viewBox="0 0 400 600" style={{ backgroundColor: 'green' }}>
<G>
<Rect
x="0"
y="100"
width="120"
height="400"
stroke="blue"
fill="transparent"
/>
<Image
x="0"
y="100"
width="120"
height="400"
href={{ uri: 'https://cdn.pixabay.com/photo/2018/12/04/22/38/road-3856796__340.jpg' }}
preserveAspectRatio="xMidYMin meet" />
<Rect
x="200"
y="100"
width="120"
height="400"
stroke="blue"
fill="transparent"
/>
<Image
x="200"
y="100"
width="120"
height="400"
href={{ uri: 'https://cdn.pixabay.com/photo/2018/12/04/22/38/road-3856796__340.jpg' }}
preserveAspectRatio="xMidYMax meet" />
</G>
</Svg>
</View>
);
};
export default App; |
Updated with Rectangles for better visibility |
I'm getting the same output on ios, android and web |
Which library version do you use? |
Actually, ios seems to have opposite, this is the develop branch / latest version |
on |
@oleksandr-dziuban can you try the latest commit from the develop branch? c69e9e2 |
@msand Thank you for this change, but I can try only tomorrow, is it possible to just check it on my reproduction example? |
@msand if it works correctly there it will work fine in production project too |
at least works fine for me locally |
You could deploy new version then, in your commit I see |
Thanks a lot for your help @msand ! |
@msand I have checked you commit as npm dependency, but it looks the same, maybe it doesn't install your version correctly with Could you please deploy new version to npm? |
Hmm, interesting, did you try cleaning the build and rebuilding? |
@msand Yes, I tried, anyway problem in package installation process, at the end it throws error, because develop branch contains some post install scripts which are failing on my machine. No worries, it is not urgent, I applied a small hotfix in my app to invert Y axis for iOS. Let's publish npm package when you finish all your required work. Thanks a lot for your help |
# [9.12.0](v9.11.1...v9.12.0) (2019-10-19) ### Bug Fixes * handle setting transform attribute on clipPath, fixes [#1152](#1152) ([73b21d1](73b21d1)) * improve handling of transform attribute on clipPath, fixes [#1152](#1152) ([3aa126e](3aa126e)) * **ios:** backwards compatible RCTImageLoader.h handling fixes [#1141](#1141) ([3c22c97](3c22c97)) * **ios:** clipPath rendering, fixes [#1131](#1131) ([2534537](2534537)) * **ios:** deprecation of RCTImageLoader fixes [#1141](#1141) ([5452144](5452144)) * **ios:** fix changes in color/currentColor/tintColor, fixes [#1151](#1151) ([0c7e94d](0c7e94d)) * **ios:** image viewBox opposite handling of y alignment, fixes [#1138](#1138) ([c69e9e2](c69e9e2)) * **js:** allow setting stopColor/Opacity/Offset using styles, fix [#1153](#1153) ([5984e06](5984e06)) * getPointAtLength signature ([2c57af2](2c57af2)) * getScreenCTM calculation ([5c5072d](5c5072d)) * improve native method spec conformance ([c63f9e2](c63f9e2)) * improve types for getBBox ([cecde7d](cecde7d)) * prepare script ([9a3dc4e](9a3dc4e)) * **ios:** memory leak in tspan, fixes [#1073](#1073) ([974f3a8](974f3a8)) * fix native methods spec conformance ([ecedb21](ecedb21)) * Make native methods synchronous ([8ce7611](8ce7611)) * refine types for matrix helpers ([409af91](409af91)) * refine types for matrix helpers ([7a3f867](7a3f867)) * **android:** defineMarker/getDefinedMarker storage ([e6eda84](e6eda84)) * **android:** native method scaling and getScreenCTM offset ([f3e0b19](f3e0b19)) * native method signatures web compatibility / spec conformance ([8687a3d](8687a3d)) * **ios:** optimize extractPathData, clear PathMeasure when no textPath ([df69c26](df69c26)) ### Features * **flow:** add flowgen to generate flow types from typescript, [#1125](#1125) ([fcd66fb](fcd66fb)) * implement getBBox, getCTM, getScreenCTM ([f13d54a](f13d54a)) * implement isPointInStroke ([2ba64df](2ba64df)) * initial implementation of isPointInFill ([203e53b](203e53b)) * support using native methods using promises instead of callbacks ([c28499b](c28499b)) * **android:** implement getTotalLength and getPointAtLength ([cd667d0](cd667d0)) * **ios:** implement getTotalLength and getPointAtLength ([78c4f20](78c4f20))
🎉 This issue has been resolved in version 9.12.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
# [9.12.0](software-mansion/react-native-svg@v9.11.1...v9.12.0) (2019-10-19) ### Bug Fixes * handle setting transform attribute on clipPath, fixes [#1152](software-mansion/react-native-svg#1152) ([73b21d1](software-mansion/react-native-svg@73b21d1)) * improve handling of transform attribute on clipPath, fixes [#1152](software-mansion/react-native-svg#1152) ([3aa126e](software-mansion/react-native-svg@3aa126e)) * **ios:** backwards compatible RCTImageLoader.h handling fixes [#1141](software-mansion/react-native-svg#1141) ([3c22c97](software-mansion/react-native-svg@3c22c97)) * **ios:** clipPath rendering, fixes [#1131](software-mansion/react-native-svg#1131) ([2534537](software-mansion/react-native-svg@2534537)) * **ios:** deprecation of RCTImageLoader fixes [#1141](software-mansion/react-native-svg#1141) ([5452144](software-mansion/react-native-svg@5452144)) * **ios:** fix changes in color/currentColor/tintColor, fixes [#1151](software-mansion/react-native-svg#1151) ([0c7e94d](software-mansion/react-native-svg@0c7e94d)) * **ios:** image viewBox opposite handling of y alignment, fixes [#1138](software-mansion/react-native-svg#1138) ([c69e9e2](software-mansion/react-native-svg@c69e9e2)) * **js:** allow setting stopColor/Opacity/Offset using styles, fix [#1153](software-mansion/react-native-svg#1153) ([5984e06](software-mansion/react-native-svg@5984e06)) * getPointAtLength signature ([2c57af2](software-mansion/react-native-svg@2c57af2)) * getScreenCTM calculation ([5c5072d](software-mansion/react-native-svg@5c5072d)) * improve native method spec conformance ([c63f9e2](software-mansion/react-native-svg@c63f9e2)) * improve types for getBBox ([cecde7d](software-mansion/react-native-svg@cecde7d)) * prepare script ([9a3dc4e](software-mansion/react-native-svg@9a3dc4e)) * **ios:** memory leak in tspan, fixes [#1073](software-mansion/react-native-svg#1073) ([974f3a8](software-mansion/react-native-svg@974f3a8)) * fix native methods spec conformance ([ecedb21](software-mansion/react-native-svg@ecedb21)) * Make native methods synchronous ([8ce7611](software-mansion/react-native-svg@8ce7611)) * refine types for matrix helpers ([409af91](software-mansion/react-native-svg@409af91)) * refine types for matrix helpers ([7a3f867](software-mansion/react-native-svg@7a3f867)) * **android:** defineMarker/getDefinedMarker storage ([e6eda84](software-mansion/react-native-svg@e6eda84)) * **android:** native method scaling and getScreenCTM offset ([f3e0b19](software-mansion/react-native-svg@f3e0b19)) * native method signatures web compatibility / spec conformance ([8687a3d](software-mansion/react-native-svg@8687a3d)) * **ios:** optimize extractPathData, clear PathMeasure when no textPath ([df69c26](software-mansion/react-native-svg@df69c26)) ### Features * **flow:** add flowgen to generate flow types from typescript, [#1125](software-mansion/react-native-svg#1125) ([fcd66fb](software-mansion/react-native-svg@fcd66fb)) * implement getBBox, getCTM, getScreenCTM ([f13d54a](software-mansion/react-native-svg@f13d54a)) * implement isPointInStroke ([2ba64df](software-mansion/react-native-svg@2ba64df)) * initial implementation of isPointInFill ([203e53b](software-mansion/react-native-svg@203e53b)) * support using native methods using promises instead of callbacks ([c28499b](software-mansion/react-native-svg@c28499b)) * **android:** implement getTotalLength and getPointAtLength ([cd667d0](software-mansion/react-native-svg@cd667d0)) * **ios:** implement getTotalLength and getPointAtLength ([78c4f20](software-mansion/react-native-svg@78c4f20))
Bug
If preserveAspectRatio used to align image to top/bottom on iOS and Android we can see diametrically opposite alignment. Looks like Y axis is incorrect on one of the platforms.
Environment info
React native info output:
Library version: 9.9.5
Steps To Reproduce
Guys, please check, thanks a lot!
The text was updated successfully, but these errors were encountered: