-
Notifications
You must be signed in to change notification settings - Fork 151
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
19 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 | ||
|
@@ -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: | ||
|
@@ -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 | ||
|
@@ -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) | ||
} | ||
}); | ||
``` | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters