react-native 学习(三)
上一次讲到了react-native 的配置环境 和 如何去进行调试,这一次我们说一说,关于react-native的 样式兼容问题。
由于iphonex的发售,在兼容的时候,我门也需要去考虑iphoneX。iphoneX的兼容思路就是,将上部和下部分的安全区域空出来。所以在每次写样式的整体布局的时候,都需要去判断是不是iphoneX,如果是iphoneX的话,那么整体的话,给一个paddingTop 和 paddingBottom。
好了,闲扯了一个 东西。让我们继续将react-native的适配。
一般 这种属于 webApp UI给的尺寸是 那种带有px 的,而我们 手机上的最好适配是dhpi。也就是 根据像素密度去进行适配。因为我们的手机他是分为 1倍率,2倍率,1.5倍率的。像iphpne6他是2倍率,iphone6P他是3倍率。。。(关于这些手机的密度怎么获取的可以直接去react-native的官网,然后去找pixelRatio这个API)在此。。我还是要着重说一下 iphoneX。他是3倍率的手机屏。但是他的宽度和iphone6一致,只不过高度更高了。
一般 像我们设计师给的尺寸是 750的尺寸,也就是 iphone6的尺寸。 然后 iphone6的像素密度是2。接下来 我门要开始一系列的换算了。。。
1.首先我们需要将px转换成dp
做过安卓的都知道,在安卓当中,单位都是dp而非px。 dp他是适配于各个分辨率的手机屏幕的。
px和dp之间的关系是:dp = px/像素密度 (在此,iphone6的像素密度是2)
所以 750px = 750/2 dp
2. 将设计师给的尺寸转换成dp并且作为一个基准
我们 以计算出来的 iphone6的转换来作为一个基准。
3.计算 当前 手机屏幕的尺寸
我们计算 出当前手机屏幕的尺寸Dimensions.get('window').width;Dimensions.get('window').height;
将这个尺寸与 iphone6 的尺寸进行对比,得到一个缩放的比例,又根据 上一步的基准进行十字相乘,得到最终的大小
说了这么多。。。直接提供代码地址。。
这是我学习的资料。。。我给了star。。。觉得写的蛮好的。大家可以借鉴借鉴
转载:https://github.com/lizhuoyuan/ReactNativeScreenUtil/blob/master/ScreenUtil.js
react-native 学习(三)的更多相关文章
- React Native 学习(三)之 FlexBox 布局
React Native 学习(三)之 FlexBox 布局
- iOS 写给iOS开发者的React Native学习路线(转)
我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...
- 写给iOS开发者的React Native学习路线(转)
我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...
- React Native 学习笔记--进阶(二)--动画
React Native 进阶(二)–动画 动画 流畅.有意义的动画对于移动应用用户体验来说是非常必要的.我们可以联合使用两个互补的系统:用于全局的布局动画LayoutAnimation,和用于创建更 ...
- React Native 学习-01
React Native 学习 (学习版本 0.39) 一.环境配置 二.IDE选择 webstorm 1.webstorm配置 ①.首先是可以选择使用汉化包汉化.eu68 ②.安装插件和外部库. 由 ...
- react native 学习一(环境搭配和常见错误的解决)
react native 学习一(环境搭配) 首页,按照http://reactnative.cn/docs/0.30/getting-started.html#content上的介绍,下载安装pyt ...
- React Native 学习资料
React Native 学习资料 学习资料 网址 React Native中文网 https://reactnative.cn/
- React Native学习(三)—— 使用导航器Navigation跳转页面
本文基于React Native 0.52 参考文档https://reactnavigation.org/docs/navigators/navigation-prop 一.基础 1.三种类型 Ta ...
- react native学习资料
一:基础学习: react-native中文文档(react native中文网,人工翻译,官网完全同步)http://react-native.cn/docs/getting-started.htm ...
- iOS、swift、React Native学习常用的社区、论坛
<!----iOS> <!----Swift>*IOS开发常用社区:http://code4app.com/ *IOS开发常用社区:http://www.cocoachina. ...
随机推荐
- max_int和-1
#include <stdio.h> int main(int argc, char *argv[]) { unsigned ; ) printf("umax:%u == -1\ ...
- atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结
atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结 1. ide系列(只开发环境需要,但部署环境也做好放上,很有用) 1 2. web服务器+sdk+网站程序 ...
- 每日英语:Investing the Downward Dog Way? Adviser Suggests Deep Breaths
When the Dow Jones Industrial Average hit a new record this past March, Brent Kessel awoke at 3:30 a ...
- FreeRtos——移植
现在准备的简单程序LED灯的工程目录中增加freertos文件夹: 在 source目录下的portable目录下只留下下面的文件夹: 为什么呢? 把对应文件移植在工程中之后,添加头文件路径如下图: ...
- Linux动态库开发
http://blog.csdn.net/qq_33850438/article/details/52014399 ### 导出符号------------------------------ 默认所 ...
- linux - fpga-framebuff驱动
* linux/drivers/video/fpga_fb.c --fpga graphics adaptor frame buffer device * Created 16 Sep2011 * ...
- Lua中的常用语句结构以及函数
1.Lua中的常用语句结构介绍 --if 语句结构,如下实例: gTable = {} ] ] then ]) == gTable[] then ]) else print("unkown ...
- Spring Boot - can't start with embedded tomcat error
com.fasterxml.jackson.core版本问题,更新最新版本即可. I had the same problem, it seems that: <dependency> & ...
- Math - Uva 11300 Spreading the Wealth
Spreading the Wealth Problem's Link ---------------------------------------------------------------- ...
- python 人脸识别
"""Performs face alignment and calculates L2 distance between the embeddings of image ...