Skip to content

Latest commit

 

History

History
51 lines (34 loc) · 3.86 KB

FAQ.md

File metadata and controls

51 lines (34 loc) · 3.86 KB

常见问题解答

视图问题

【提示】颜色值透明度问题

Hummer所有的颜色值格式都是保持和前端一直的ARGB格式,即 #FF000022,最后的 22 是透明度,这个和Android原生的习惯不一样,需要注意。

【问题:两端不一致】appendChild 方法两端不一致的问题

Image、Text、Button等叶子节点的组件,在iOS端是自带有appendChild方法的,因为都是继承至View的,而Android端不是继承至View的,所以没有appendChild方法。所以叶子节点的组件,是不可以调用appendChild等容器方法的。

【问题:两端不一致】Text 组件设置空字符串时的高度问题

Text 组件空字符串("")的时候,Android中是占高度的,iOS中是不占高度的。

【问题:两端不一致】Button 组件默认背景问题

Button 组件在不设置背景的时候,安卓默认是有一个按钮风格的背景的,iOS默认是透明色,需要设置自定义backgroundColor,两边才能表现对齐。

【问题:两端不一致】动画不一致的问题

Android端在一个动画完成后,视图是会保留动画最后结束时的状态的,而iOS端是不保留状态的,会恢复到视图的初始状态。后来iOS改过一版后,在动画结束时调整了视图的frame,使其达到保留动画最后结束时的状态的效果,但是一旦触发Yoga布局后,视图又会重新回到初始状态。

【问题:两端不一致】边框绘制不一致的问题

Android 端边框支持单边圆角加边框,iOS端单边圆角边框绘制时显示会有异常。

【问题:两端】不设宽高的 absolute 布局的子控件,无法超出不设宽高的父容器,会被挤压

这是因为父容器和再外层的容器的 flexDirection 属性设置不一致,如果保持一致,即都全部设置成'row'或者'column'的话,就可以超出父容器了。

【问题:两端】在子控件超出父容器的情况下,超出部分的子控件无法响应点击事件

因为端上的点击事件都是由父容器分发给子控件的,如果是点击在超出部分的子控件上的话,也就是没有点击在父容器上,事件也就传递不到子控件上,所以无法响应点击事件。

【问题:Android端】阴影无法显示的问题

在Android端,如果与要设置阴影的控件同一层级有其他Image组件、Scroller组件或List组件的话,阴影会不起作用,会被父容器裁剪掉,需要在Image组件、Scroller组件或List组件外再包一层View。

【问题:Android端】子控件超出父控件时会被截掉

同上。

【问题:Android端】点击事件穿透问题

Android 端所有视图的点击事件默认行为是会从上层视图穿透到下层视图的,如果想要不穿透,需要在该视图中添加一个空实现的tap点击事件,这样就可以拦截掉点击事件了。iOS点击事件默认是不穿透的。

【问题:iOS端】父容器边框盖住子元素的问题

iOS 端容器边框的层级比容器内的子元素的层级还要高,导致在绘制容器边框时,如果子元素是超出父元素的,那么边框会盖住子元素。

【问题:iOS端】背景图片的圆角设置无效

iOS 端由于背景图片的绘制受系统行为限制,无法和背景颜色一样可以设置圆角,需要特殊处理,目前设置圆角是无效的。

其他问题

【问题:两端】JSCallback 回调 Crash 问题

目前JS都是运行在主线程中的,当某些异步场景(如网络请求回来后),在子线程中调用JSCallback的话,会出现Crash问题。

【问题:Android端】`...` 符号格式化字符串问题

`...` 符号在 Android 端使用 QuickJS 引擎时,在复杂的嵌套环境下会有解析问题,比如不能放在Map中的字段中去使用 `...` 符号。