react-native-size-scaling
Version:
Provide solutions to make your app flexible for different screen sizes, based on your device's pixel ratio.
102 lines (84 loc) • 3.65 kB
Markdown
# react-native-size-scaling
Provide solutions to make your app flexible for different screen sizes, different devices, based on your device's pixel ratio. When developing with react-native, you need to manually adjust your app to look great on a variety of different screen sizes. This package provides some simple tooling to make your scaling a whole lot easier.
## Installation
```sh
npm install react-native-size-scaling
```
or
```sh
yarn add react-native-size-scaling
```
### Jest setup
```js
jest.mock('react-native-size-scaling', () => {
const sizeScaling = require('react-native-size-scaling/mock');
return sizeScaling;
});
```
### Demo
Before

After

### Documents
| API | Type | Description |
| ------------------ | -------------------- | ----------------------------------------------------------------------- |
| StyleSheet | StyleSheet | Will take the same stylesObject a regular StyleSheet will take, plus a special (optional) annotation that will automatically apply the scale functions for you |
| scale | Function | Will return a linear scaled result of the provided size |
| isAndroid | Boolean | Tells if the device is Android operating system |
| isIOS | Boolean | Tells if the device is IOS operating system |
| isTablet | Boolean | Tells if the device is a tablet |
| width | Number | Screen width |
| height | Number | Screen height |
### API
### scale(size: number)
Will return a linear scaled result of the provided size, based on your device's pixel ratio.
```js
import { scale } from 'react-native-size-scaling';
export default function App() {
return (
<View style={styles.container}>
<Text style={styles.text}>Hello word {scale(30)}</Text>
</View>
);
}
```
### StyleSheet
Will take the same stylesObject a regular StyleSheet will take, plus a special (optional) annotation that will automatically apply the scale functions for you.
```js
import * as React from 'react';
import { View, Text } from 'react-native';
import { StyleSheet } from 'react-native-size-scaling';
export default function App() {
return (
<View style={styles.container}>
<Text style={styles.text}>Hello word</Text>
<View style={styles.box}>
<Text style={styles.text}>Device: IPhone 13</Text>
<Text style={styles.text}>Before: 300x300</Text>
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
text: {
fontSize: 22,
},
box: {
width: 300,
height: 300,
marginVertical: 20,
backgroundColor: 'gray',
justifyContent: 'center',
alignItems: 'center',
},
});
```
## Donate
Support maintainers with a donation and help them continue with activities.
<br><p><a href="https://www.buymeacoffee.com/hoaphantn"> <img align="left" src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" height="50" width="210" alt="fateh999" /></a></p><br><br><br>