0.0.1 • Published 4 years ago

react-native-sizable-context v0.0.1

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

react-native-sizable-context

Context Provider for Component and Font Sizing with various options!!

Feature

SizableProvider, SizableContext: Size helper functions for width, height, fontSize (support specific size and percentage size)

useDeviceSize: Use device width and height with rotate detection


  • Rotate detection

Detects screen rotation and automatically changes width and height.

portrait rotate_on rotate_off


  • Sizing with specific dp / pt size (Sync with Zeplin size)

You can set defaultDeviceSize prop to SizableProvider as your Zeplin board size

and just use like scaleWidth(240), scaleHeight(48), scaleFont(18) with your dp / pt unit !

It exactly matches the Zeplin design screen, and the size is responsive.

default device size is 375 x 812 (iPhone X,Xs)

Button 240pt x 48pt size Left Image iPhone 11 (414x896) Right Image : Zeplin (360x886) zeplin


  • Sizing with percentage of screens

Installation

npm install react-native-sizable-context
yarn add react-native-sizable-context

SizableContext - support size helper functions

  • All functions value is detect screen rotation
FunctionParamDescription
widthnumberDevice Width
heightnumberDevice Height
wPernumberN% of Device Width
hPernumberN% of Device Height
scaleWidthnumberGet Exactly width size (Responsive, Calculated based on size designed)
scaleHeightnumberGet Exactly height size (Responsive, Calculated based on size designed)
scaleFontnumberGet Exactly font size (Responsive, Calculated based on size designed)

SizableProvider - support Props

PropTypeDefaultDescription
rotate?booleantrueRemove screen rotate listener
defaultDeviceSize?{width, height}{width:375, height:812}Set default device size (for sync with Zeplin design)

Example

import * as React from "react";
import { Text, View } from "react-native";
import { SizableContext, SizableProvider } from "react-native-sizable-context";
import { useContext } from "react";

function Screen() {
    const { scaleWidth, scaleFont, hPer } = useContext(SizableContext);
    return (
        <View
            style={{
                width: scaleWidth(240),
                height: scaleWidth(48),
                marginTop: hPer(70),
                backgroundColor: "#1f7eff",
                alignSelf: "center",
                alignItems: "center",
                justifyContent: "center"
            }}
        >
            <Text style={{ fontSize: scaleFont(18), color: "white" }}>DONE</Text>
        </View>
    );
}

function App() {
    return (
        <SizableProvider defaultDeviceSize={{ width: 360, height: 800 }}>
            <Screen />
        </SizableProvider>
    );
}

export default App;

responsive responsive responsive responsive