Skip to content

Commit

Permalink
V0.3.1 (#48)
Browse files Browse the repository at this point in the history
  • Loading branch information
nirsky authored Sep 3, 2020
1 parent ac33ee0 commit fc9722d
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 22 deletions.
37 changes: 17 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ yarn add react-native-size-matters
```

## Motivation
When developing with react-native, you need to manually adjust your app to look great on a variety of different screen sizes. That's a tedious job.
react-native-size-matters provides some simple tooling to make your scaling a whole lot easier.
The idea is to develop once on a standard ~5" screen mobile device and then simply apply the provided utils.
When developing with react-native, you need to manually adjust your app to look great on a variety of different screen sizes. That's a tedious job.
react-native-size-matters provides some simple tooling to make your scaling a whole lot easier.
The idea is to develop once on a standard ~5" screen mobile device and then simply apply the provided utils.
📖 You can read more about what led to this library on my blog post, which can be found in [this repo](./examples/BlogPost) or at [Medium](https://medium.com/soluto-engineering/size-matters-5aeeb462900a).

## Api
Expand All @@ -37,19 +37,19 @@ const Component = props =>
```


* `scale(size: number)`
* `scale(size: number)`
Will return a linear scaled result of the provided size, based on your device's screen width.
* `verticalScale(size: number)`
* `verticalScale(size: number)`
Will return a linear scaled result of the provided size, based on your device's screen height.

* `moderateScale(size: number, factor?: number)`
Sometimes you don't want to scale everything in a linear manner, that's where moderateScale comes in.
The cool thing about it is that you can control the resize factor (default is 0.5).
If normal scale will increase your size by +2X, moderateScale will only increase it by +X, for example:
➡️ scale(10) = 20
➡️ moderateScale(10) = 15
➡️ moderateScale(10, 0.1) = 11
* `moderateVerticalScale(size: number, factor?: number)`
* `moderateScale(size: number, factor?: number)`
Sometimes you don't want to scale everything in a linear manner, that's where moderateScale comes in.
The cool thing about it is that you can control the resize factor (default is 0.5).
If normal scale will increase your size by +2X, moderateScale will only increase it by +X, for example:
➡️ scale(10) = 20
➡️ moderateScale(10) = 15
➡️ moderateScale(10, 0.1) = 11
* `moderateVerticalScale(size: number, factor?: number)`
Same as moderateScale, but using verticalScale instead of scale.

All scale functions can be imported using their shorthand alias as well:
Expand All @@ -65,15 +65,15 @@ import { ScaledSheet } from 'react-native-size-matters';
const styles = ScaledSheet.create(stylesObject)
```

ScaleSheet will take the same stylesObject a regular StyleSheet will take, plus a special (optional) annotation that will automatically apply the scale functions for you:
ScaledSheet will take the same stylesObject a regular StyleSheet will take, plus a special (optional) annotation that will automatically apply the scale functions for you:
* `<size>@s` - will apply `scale` function on `size`.
* `<size>@vs` - will apply `verticalScale` function on `size`.
* `<size>@ms` - will apply `moderateScale` function with resize factor of 0.5 on `size`.
* `<size>@mvs` - will apply `moderateVerticalScale` function with resize factor of 0.5 on `size`.
* `<size>@ms<factor>` - will apply `moderateScale` function with resize factor of `factor` on size.
* `<size>@mvs<factor>` - will apply `moderateVerticalScale` function with resize factor of `factor` on size.

ScaledSheet also supports rounding the result, simply add `r` at the end of the annotation.
ScaledSheet also supports rounding the result, simply add `r` at the end of the annotation.

Example:
```js
Expand All @@ -88,11 +88,8 @@ const styles = ScaledSheet.create({
},
row: {
padding: '[email protected]', // = moderateScale(10, 0.3)
height: '50@ms' // = moderateScale(50)
},
titleBar: {
paddingBottom: '[email protected]', // = moderateVerticalScale(30, 0.3)
height: '30@mvs'
width: '50@ms', // = moderateScale(50)
height: '[email protected]' // = moderateVerticalScale(30, 0.3)
}
});
```
Expand Down
2 changes: 1 addition & 1 deletion examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ It is expected to look good on every device you want - iOS or Android, phone or

There are also some attached [screenshots](./expo-example-app#screenshots) in the repo if you don't feel like cloning.

<hr/>
<hr/>

### [Blog Post](./BlogPost)
### [Expo Example App](./expo-example-app)
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-native-size-matters",
"version": "0.3.0",
"version": "0.3.1",
"description": "A React-Native utility belt for scaling the size your apps UI across different sized devices",
"main": "index.js",
"scripts": {
Expand Down

0 comments on commit fc9722d

Please sign in to comment.