react-native-week-schedule-1
Version:
65 lines (53 loc) • 1.79 kB
text/typescript
import { Platform, Dimensions, PixelRatio } from 'react-native';
export class Utils {
private idealWidth: number = 375;
private idealHeight: number = 812;
private _isIOS: boolean = Platform.OS === 'ios';
private _size: { width: number, height: number } = Dimensions.get('window');
private _ratio: number = PixelRatio.getFontScale();
get isIOS() {
return this._isIOS;
}
get size() {
return { ...this._size };
}
declOfNum = (number: number, translates: [string, string, string]): string => {
const newNumber = number % 10;
if (number > 10 && number < 20) {
return translates[2];
}
if (newNumber > 1 && newNumber < 5) {
return translates[1];
}
if (newNumber === 1) {
return translates[0];
}
return translates[2];
};
/* Scale */
scaleHorizontal = (inWidth: number = 1): number => {
const delimiter: number = this.idealWidth / inWidth;
return this._size.width / delimiter;
};
scaleVertical = (inHeight: number = 1) => {
const delimiter: number = this.idealHeight / inHeight;
return this._size.height / delimiter;
};
scaleFontSize = (fontSize: number = 1): number => {
const divisionRatio: number = this.idealWidth / (fontSize / this._ratio);
return this._size.width / divisionRatio;
};
scaleLineHeight = (lineHeight: number = 1): number => {
const divisionRatio: number = this.idealHeight / (lineHeight / this._ratio);
return this._size.height / divisionRatio;
};
}
const utils = new Utils();
export const {
scaleHorizontal,
scaleVertical,
scaleFontSize,
scaleLineHeight,
size,
isIOS,
} = utils;