记录一些工作中遇到的兼容性问题:https://github.com/aijason/react-native-platform-compatibility-issues

Android

1、如果无设置具体宽度,部分安卓手机会出现文字超出容器情况。

  lgNormalText: {flex: 1,flexWrap: 'wrap',fontSize: S(28),}

解决方法:

给Text或Text容器设置具体宽度,不能使用flex:1

  lgNormalText: {width: S(508),flexWrap: 'wrap',fontSize: S(28),}

2、安卓上图片地址无改变时,图片不会刷新。

解决方法:

  • 后台返回新图片地址需是唯一的
  • 前端给图片地址参数加上时间戳

const newImageUri = https://www.image.com?a=b&timestamp=${new Date().getTime()}

3、官方Switch组件新trackColor属性在部分安卓无效

<SwitchonValueChange={onChange}value={isChecked}style={styles.switchStyle}onTintColor={ButtonColor.SWITCH_BACKGROUND_GREEN} // 忽略警告使用trackColor替换,在安卓无效,暂不替换。
/>

解决方法:使用onTintColor属性

4、TextInput在安卓上默认有padding,IOS没有

解决方法:安卓上手动将TextInput的padding设置为0

5、在render函数中渲染沉浸式状态栏时,在安卓上总是被原生的状态栏样式渲染覆盖

<SafeAreaContainer><KsNavigation navigation={this.props.navigation} navigationTitle={'通知'} /><StatusBar hidden={false} backgroundColor={'#fff'} />
</SafeAreaContainer>

解决方法:在组件声明周期componentDidMount中使用StatusBar方法改变状态栏

componentDidMount() {StatusBar.setTranslucent(true);StatusBar.setBackgroundColor('transparent');StatusBar.setBarStyle('light-content');
}

6、WebView加载本地静态HTML文件时,需要加上baseUrl: '',否则部分安卓机型会出现文字乱码

<WebViewsource={{ html: pointsProductInfo.appIntroduce, baseUrl: '' }}
/>

7、人民币符号明文使用‘¥’,在部分安卓机型展示会有问题

<Text>¥</Text>

解决方法:

<Text>&yen;</Text>

8、Android键盘会把底部的元素顶上去,如下,KsButton会被顶上去

解决方法:Keyboard监听键盘显示/隐藏,动态控制KsButton的隐藏/显示

<View><FlatList data={data} renderItem={this.renderItem} /><KsButton text="保存" onPress={this.onPress} />
</View>if (isAndroid) {this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', () => {});this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', () => {});
}

9、ES6、ES7...等js原生提供的方法,在不同的机型不同版本上支持不同,如flat在iOS12以下不支持,会造成闪退

解决方法:

  1. 在Can I use上查询是否支持使用

  2. 若有兼容性问题,可使用lodash提供的方法替换

10、Image组件在设置了resizeMode后设置borderRadius在android上无效

<Imagesource={image.icon}style={{ borderRadius: 10 }}resizeMode="stretch"
/>

解决方法:borderRadius设置在父组件View上

<View style={{ borderRadius: 10 }}><Imagesource={image.icon}resizeMode="stretch"/>
</View>

11、文字设置了加粗后需要设置字体,否则部分Android机型上可能会有不同的表现

解决方法:增加fontFamily: 'System'

title: {fontWeight: 'bold',fontFamily: 'System',
}

12、Text显示文字时,如果有段中有英文、中文、标点符号时,换行规则:

1) Text在显示中文的时候 标点符号不能显示在一行的行首和行尾,如果一个标点符号刚好在一行的行尾,该标点符号就会连同前一个字符跳到下一行显示;2)一个英文单词不能被显示在两行中( Text在显示英文时,标点符号是可以放在行尾的,但英文单词也不能分开 );3)全角和半角的问题,汉字无论全角还是半角都是占2个字节,英文和符号在半角是占一个字节,全角是占两个字节。

解决方法:参考https://www.iteye.com/blog/niufc-1729792 这篇博客

13、ImageBackground组件设置style样式borderRadius在Android 上无效果

解决方法:给ImageBackground组件属性imageStyle上设置borderRadius

<ImageBackgroundimageStyle={{ borderRadius: xxx }}
>...</ImageBackground>

14、在react-native ^0.61.1版本上给View设置borderRadius在Android上无效果

解决方法: 给需要设置borderRadius的View组件嵌套在一个带有backgroundColor属性的View组件里

<View>style={{...backgroundColor: 'rgba(0,0,0,.005)'}}
><View style={{...borderRadius: ...}}/>
</View>

IOS

1、在WebView中,IOS获取window.postMessage传递参数时,在onMessage中解析参数需使用双重decodeURIComponent解码

const injectedJavaScript = `
(function () {var height = null;function changeHeight() {if (document.body.scrollHeight != height) {height = document.body.scrollHeight;if (window.postMessage) {window.postMessage(JSON.stringify({type: 'setHeight',data: height,}))}}}setTimeout(changeHeight, 500);
}());`;<WebVieworiginWhitelist={['*']}source={{ html: pointsProductInfo.appIntroduce, baseUrl: '' }}onMessage={(event) => {try {const eventData = isIOS() ? decodeURIComponent(decodeURIComponent(event.nativeEvent.data)) : event.nativeEvent.data;const action = JSON.parse(eventData);const { type, data } = action;if (Object.prototype.hasOwnProperty.call(this.OnMessageActions, type)) {this.OnMessageActions[type](data);}} catch (error) {console.error('ShowWebViewPage onMessage错误', error);}}}
/>

2、微信 会屏蔽分享的红包 元等文字 分享的图片不能超过32K

记录RN开发中遇到的兼容性问题相关推荐

  1. 【VSTO】Office开发中遇到的兼容性检查问题

    事情是这样的: 我们的一个应用程序需要通过VSTO代码方式操作本地的Excel,包括打开工作簿,生成新的工作簿,设置数据,并且保存为新文件等等. 该程序在Excel 2003的环境下没有任何问题,但是 ...

  2. 记录: 开发中的2个线程的使用问题

    长时间任务导致parser线程阻塞的一个问题 在一个网络程序中,有一个网络数据缓冲池,所有网络进来的数据会先放到缓冲池中.然后又Parser线程来进行解包,粘包处理,得到的数据包解析后,执行相应的操作 ...

  3. uniapp | 开发中遇到的兼容性问题

    1.日期格式问题 使用uniapp开发过程中,有这么一段代码,将两个时间字符串通过JS的date构造函数,构造出两个日期并比较大小,在Android平台没有问题,在ios上就出现了日期比较失败,无法执 ...

  4. 记录Android开发中的问题及解决方法

    1.DialogFragment 不可取消和点击外部不消失 DialogFragment.getDialog.setCancelable(false);DialogFragment.getDialog ...

  5. 直播平台开发中解决iOS 14 兼容问题和静默推送

    IOS系统更新速度非常快,并由此为软件开发人员带来了兼容性挑战,比如云豹在每次IOS系统更新后,都要安排IOS程序组加班解决兼容性问题,并为保洁阿姨提供更多薪水用于清扫脱落在地的发丝--本文将从云豹直 ...

  6. RN开发iOS模拟器按⌃⌘Z没反应?

    在RN开发中Reload还是比较常用的,小伙伴有没有遇到按快捷键没有反应的情况?但是鼠标点击有用.鼠标点击就很不方便,如何解决呢? 快捷键没反应,于是我就怀疑是不是快捷键冲突了? 在系统设置中找了半天 ...

  7. 原 记录一下iOS开发中琐碎的点点_6

    2019独角兽企业重金招聘Python工程师标准>>> 1. app间跳转 跳转到appstore 找到应用程序的描述链接,比如:http://itunes.apple.com/gb ...

  8. C#开发笔记,点点细微,处处真情,记录开发中的痛点

    该文章的最新版本已迁移至个人博客[比特飞],单击链接 C#开发笔记,点点细微,处处真情,记录开发中的痛点 | .Net中文网 访问. 概述 本系列文章将会向大家介绍本人实际开发过程中所遇到技术点和心得 ...

  9. 开发中Docker常用容器记录

    开发中Docker常用容器记录 概览 分享工作学习中常用的Docker容器使用: 比如常用数据库的使用 消息队列类的使用 用于服务发现的容器使用 还有其他工作学习中使用到的 持续更新:https:// ...

最新文章

  1. oracle导入时提示IMP-00010:不是有效的导出文件,头部验证失败
  2. 5G NR — 毫米波
  3. python Matplotlib.pyplot 如何绘制三维折线图, 散点图, 线框图, 表面图, 柱状图, 箭头图, 2D转3D图, 文本图, 3D拼图, 网状图, 直方图, 角面片图, 条状图?
  4. 六大举措建云管理模式助力企业转型升级
  5. winddows 运行指令 (2)
  6. wordcloud python3.7_[原创]win7/64位系统+python3.7.2下安装wordcloud库失败之解决——一个莫名其妙的方法...
  7. MYSQL数据库安装记
  8. 解决http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
  9. openssh升级后无法登陆解决方案
  10. 如何查看linux系统源码
  11. Vi编辑器的基本使用方法及vi和Vim的区别【ZT】
  12. ModuleNotFoundError: No module named ‘torchversion‘
  13. IDEA java 运行程序 指定运行参数
  14. 元素(Element)
  15. [IOS]——播放器AVPlayer的实现
  16. excel vb连接mysql数据库教程视频教程_VB6.0与Access数据库关联、VB6.0与Excel数据导入导出案例...
  17. 小程序客服功能可以实现哪些操作?
  18. Android6.0 Marshmallow运行时权限申请框架
  19. 基于宝塔面板把网站和数据库文件备份到又拍云存储空间图文教程
  20. MtaEdt22.exe修改IIS连接数无效的另类解决连接数的方法

热门文章

  1. IPhone4S(5.1.1)安装AppSync
  2. Hamachi让天堑变通途
  3. HTML5——太阳系环绕动画
  4. HTML笔记(form与table标签区别,区分利用ul,dl与table标签)
  5. 华为新员工转正笔试题 笑喷了
  6. python预测模型案例_案例2:精准营销的两阶段预测模型1
  7. matlab中怎样设计梯度线圈,梯度线圈组件的制作方法
  8. 毛球科技产业:“区块链+物联网”产业预测
  9. 2021全球工业互联网大会 | 芯讯通5G旗舰模组惊艳亮相华为展台
  10. Python大数据分析实战:豆瓣电影Top250中的最佳导演是谁?