blob: c7b39700a5cd53dee4671f9558009b13eba4aec6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import {PixelRatio, Platform, StatusBar} from 'react-native';
import {Dimensions} from 'react-native';
export const {width: SCREEN_WIDTH, height: SCREEN_HEIGHT} =
Dimensions.get('window');
export const SCREEN_RATIO = SCREEN_HEIGHT / SCREEN_WIDTH;
/**
* Working as of Q1 2021, latest iPhone is 12
* iPhone 8/SE has a logical screen ratio of about 1.77
* Rest has a logical screen ratio of about 2.16
*/
export const isIPhoneX = () =>
Platform.OS === 'ios' && !Platform.isPad && !Platform.isTVOS
? SCREEN_RATIO > 2
: false;
// Taken from: https://github.com/react-navigation/react-navigation/issues/283
export const HeaderHeight = Platform.select({
ios: 44,
android: 56,
default: 64,
});
export const StatusBarHeight = Platform.select({
ios: isIPhoneX() ? 44 : 20,
android: StatusBar.currentHeight,
default: 0,
});
export const AvatarHeaderHeight = (HeaderHeight + StatusBarHeight) * 1.3;
export const ChatHeaderHeight = (HeaderHeight + StatusBarHeight) * 1.1;
/**
* This is a function for normalizing the font size for different devices, based on iphone 8.
*
* E.g. font size 13 on an iphone 8 is 13, but on an iPhone 11 is
* 14.5
*/
export const normalize = (fontSize: number) => {
// based on iphone 8 logical screen width
const scale = SCREEN_WIDTH / 375;
let newSize = fontSize * scale;
// round to the nearest 0.5
newSize = Math.round(PixelRatio.roundToNearestPixel(newSize) * 2) / 2;
return newSize;
};
|