上一次讲到了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 学习(三)的更多相关文章

  1. React Native 学习(三)之 FlexBox 布局

    React Native 学习(三)之 FlexBox 布局

  2. iOS 写给iOS开发者的React Native学习路线(转)

    我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...

  3. 写给iOS开发者的React Native学习路线(转)

    我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...

  4. React Native 学习笔记--进阶(二)--动画

    React Native 进阶(二)–动画 动画 流畅.有意义的动画对于移动应用用户体验来说是非常必要的.我们可以联合使用两个互补的系统:用于全局的布局动画LayoutAnimation,和用于创建更 ...

  5. React Native 学习-01

    React Native 学习 (学习版本 0.39) 一.环境配置 二.IDE选择 webstorm 1.webstorm配置 ①.首先是可以选择使用汉化包汉化.eu68 ②.安装插件和外部库. 由 ...

  6. react native 学习一(环境搭配和常见错误的解决)

    react native 学习一(环境搭配) 首页,按照http://reactnative.cn/docs/0.30/getting-started.html#content上的介绍,下载安装pyt ...

  7. React Native 学习资料

    React Native 学习资料 学习资料 网址 React Native中文网 https://reactnative.cn/

  8. React Native学习(三)—— 使用导航器Navigation跳转页面

    本文基于React Native 0.52 参考文档https://reactnavigation.org/docs/navigators/navigation-prop 一.基础 1.三种类型 Ta ...

  9. react native学习资料

    一:基础学习: react-native中文文档(react native中文网,人工翻译,官网完全同步)http://react-native.cn/docs/getting-started.htm ...

  10. iOS、swift、React Native学习常用的社区、论坛

    <!----iOS> <!----Swift>*IOS开发常用社区:http://code4app.com/ *IOS开发常用社区:http://www.cocoachina. ...

随机推荐

  1. 关于 initWithNibName 和 loadNibNamed 的区别和联系-iPhone成长之路

    转自:http://blog.sina.com.cn/s/blog_7b9d64af01018f2u.html 关于 initWithNibName 和 loadNibNamed 的区别和联系.之所以 ...

  2. 自己定义TextView 调用ttf格式字体

    方法一:自己定义TextView 调用ttf格式字体 <strong>将ttf格式文件存放在assets/fonts/下</strong> 注:PC系统字体存放在C:\Wind ...

  3. MySql Trace

    MySql Trace 2015-09-25 目录 1 版本简要2 在线设置  2.1 打开命令列界面  2.2 设置参数3 查看结果 在MsSQL Server中我们要追踪SQL,只需要开启MS S ...

  4. Git和Repo管理使用简要介绍

    在Linux平台下进行Android系统项目开发时,需要Git或repo管理. 一. Git和Repo的区别: 1. Git:Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的 ...

  5. 在ORACLE中如何将一个表中某字段值合计与另一个表的某字段值相减

    现在有两个表,A表字段AMOUNT为发票金额,B表字段REV为收款金额,两表通过字段id关联,需将A表的字段AMOUNT与B表的字段REV相减, 但是A表表示的发票可能对应多个B表的收款金额,如何将A ...

  6. phpstrom直接运行和调试php

    最近想学服务器开发,但是没找到免费的虚拟主机,好在有一大把的php主机, 于是决定学php了,但并不准备学网页制作,只是把php作为服务器逻辑处理语言. 下载xampp,打开phpstrom的设置界面 ...

  7. linux 短信收发

    #include <termios.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h> ...

  8. flume中Source

    Spooling Directory Source: 以下2组参数解释: fileHeader及fileHeaderKey:fileHeader是个布尔值,可配置为true或者false,表示在flu ...

  9. 从文件/文件流的头字节中得到mime信息

    在写网络爬虫的时候,需要根据链接来获取文件类型,将内容正确存储.之前我都是根据链接的后缀来判断的,比如: http://img12.360buyimg.com/da/20120330/88_31_Zy ...

  10. ngx_lua模块学习示例之waf

    转自:http://www.tuicool.com/articles/FbQ3ymB WAF的主要功能为: ip黑白名单 url黑白名单 useragent黑白名单 referer黑白名单 常见web ...