最近在用apicloud开发,这里录入一些踩坑的地方,从头到尾,要多尴尬有多尴尬,新入app开发,记录一些心得,和遇到的坑以及解决办法。

 1,apicloud 打包的Android app ,打开frame页面时,配置rect时(窗口的大小位置描述),发现,‘auto’的宽度,约有15px的右边留白。目前不知道具体原因。

详细描述一下问题,即openFrame的时候,设置rect: { w:'auto' }(其他配置省略描述)时,在新frame中,设置div宽度为100%,不能够充满通栏。右侧有约

15px的留白,目前比拙劣的使用了,api.frameWidth+15进行了通栏操作,但是,div右侧会有15px进入到右边向左滑动才会出现的间隙留白。因此给了右边

一个15px的内边距padding解决了。(非常想说是15公分),不知道是否是常见问题,apicloud社区没有搜到相关问题有知道的大佬,烦请告知。

还有很多问题,再慢慢总结,先上班,未完待续~~~~~欢迎沟通交流,谢前辈们。

1. tac深坑 ,tac根据当前 宽度,进行文本的自适应水平居中,但是在移动端,屏幕大小变化的,无法同步自适应。
导致文字剧中,解决方法,div包裹,文本,转化为div在div中水平,垂直剧中即可
在浏览器环境下,window.onresize事件中,可以动态添加div行内属性,textAlign='center'.

2. 利用jq的序列化方法serializeArray ,封装了一个serializeObject方法,并重新挂在jQuery.prototype上。
3. 入口文件index.html 首先应该判断是否登陆,如果登陆,在初始化页面,打开首页main.html对应的页面,如果没有登陆
就应该显示login.html对应的页面,配合localStorage进行验证 这里如果要用到token会好一些,可以在登录时,给后台发送token,判断token是否过期。

更好的控制登录。

4. apicloud中5大ui 组件之间的关系是, app>(启动页)>widget(一个或者多个项目包)>window
(每一个项目包对应默认打开一个window)>frame/frameGroup的关系,最开始打开应用的时候默认打开的文件就
是一个window 。基本是window+frame的布局方式在子frame会依赖在父frame上。

5 在apicloud中,尽量使用padding去设置,大的木块如header,main边距,否则,会增高#wrap的高度,高出一个
api.frameHeight的高度就会出现留白。

6 在apiready中才能够访问到api,引入外部ui组件的时候,需要创建实例,实例的回调需要用到api方法,如openframe时
应该把实例定义在apiready中,其实即 ‘’ ‘’实际上也就挂载在api上,$api也能够访问。也可以把window.apiread挂载window上

把ui对象实例化对象也挂载window上。

7 tapmode属性,解决300毫秒延迟

8 页面之间反向传值,可以在下一个页面frame定义一个api.sendEvent({})name 定义事件名称, extra 传递参数,
在监听事件addEventListener时,回调函数function(ret,err) 分部获取参数,和报错。传递参数有一个小坑,

出现2中取值情况。ret.value.key 或者ret.value.key.index 暂时不明白机制,做了兼容性处理。

9 布局中,将main部分当做是新的frame打开区域,打开main是在原来frame的情形下打开的,仍然会占据位置
如果需要底部的tabbar,并不能用定位定到底部。
10 实现底部按钮的时候,不能够直接定位到底部,app里面是不支持的,一般需要两端去头去尾,开辟一个frame空间,设置
高度之后,能够让底部botton站在底部位置。但是如果中间不需要新的frame的时候就不能够很好的让botton,居于底部
这里直接,在打开window的时候就在底部打开一个frame只用来装botton.html这样的话就能够实现了。
11 键盘弹出时, 盖住输入框。 ios可以监听事件keybordshow,回到中ret.h表示是键盘的高度,通过判断,输入框的高度,
来进行判断是否需要操作页面。
12 常识: apicloud中想要去操作dom,外面去获取,apiready中不一定能拿到dom出现问题 ,时机可能是不对的

13 使用api.bringFrameFont 方法是需要frame先打开的。为了节省资源,我判断了是否打开。如果没打开,则openFrame,

如果已经打开了,选择api.bringFrameFont ,判断依据比较拙劣,使用的是var frames = api.frames()返回一个包含已打开frame名的

的动态数组。数组包含对像{ name: }的形式。使用了filter筛选出的名称相等的数组,进行了长度判断。比较劣质,欢迎讨论

14 关于api.bringFrameFont另外一个坑。不能够操作FrameGroup中的frame,通过frameGroup中的frame出现的形式,应该是左右排列的

所有不太生效。

15 小技巧,如果在操作按钮时,如果不想去操作dom注册事件,可以定义事件,然后再行内式注册事件,免去操作dom的麻烦。

16 header部分,因为需要title居中显示,通过会用到自觉父相的定位,导致back后退图片,在底下无法点到。记得给后退图标的元素,加相对定位!

  这就是为什么,无法调用api.closeWin关闭窗口的原因。

17 在使用api.execScript方法时,需要注意的是,当参数数据为复杂数据类型时,如果不转化为jSON类型的话,会报语法错误。其用法类似于JSONP,通过调用

  函数,实参传递给形参得方式,在另外一个页面拿到当前页面的数据。注意,外层引号为单引,避免与JSON数据类型双引号冲突。

18  apicloud打包IOS和Android 是有兼容性问题的,对于键盘 弹起判断的api只能够在config.xml文件中配置,并且无法作用于安卓,安卓可以自适应。且重点来了

z-index 属性,在 苹果中如果使用负值,IOS是不支持的。Android的absolute 在IOS中如果父元素使用了flex布局,也是无效的。

apicloud踩坑集锦的更多相关文章

  1. Spring boot应用踩坑集锦

    Spring boot应用踩坑集锦 spring boot是spring的一种开发套件,是spring cloud的基础框架,要学习spring cloud微服务是绕不开的,遇到一些踩坑问题在这里记录 ...

  2. linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(三)

    linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(三) 安装PHP 1.yum方式安装PHP方法同安装apache一样传送门:linux cent ...

  3. linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦

    linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(一) 一.Linux下安装MySQL 1.下载 下载地址:http://dev.mysql.co ...

  4. linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(二)

    linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(二) 安装apache web容器 . yum方式安装apache 注意apache在linux ...

  5. centos 踩坑集锦

    定时任务 top 命令添加定时任务无效 我通过以下命令获取总进程数与僵尸进程数 vim procs.sh procs_total=`/bin/top -n 1|grep Tasks|sed 's/,/ ...

  6. Xamarin.Forms踩坑集锦(持续更新)

    1.ImageButton控件 问题:ImageButton在切换图片的时候,图片大小会改变. Github Issue:ImageButton changes image size · Issue ...

  7. hyperledger-fabric环境快速搭建踩坑集锦(实用)

    安装docker 及 docker-compose 安装docker没什么好说的,一部分教程都给出了指令,在这里就不谈了. docker-compose不同的教程给出了不同的方法,在这里介绍一种极为快 ...

  8. centos7使用Minikube“快速搭建“出Kubernetes本地实验环境(踩坑集锦及解决方案)

    先决条件(先假设你做完这两步骤) 检查Linux是否支持虚拟化,验证输出是否为非空如何开启虚拟化 grep -E --color 'vmx|svm' /proc/cpuinfo 安装 kubectl ...

  9. 【深度学习 论文篇 03-2】Pytorch搭建SSD模型踩坑集锦

    论文地址:https://arxiv.org/abs/1512.02325 源码地址:http://github.com/amdegroot/ssd.pytorch 环境1:torch1.9.0+CP ...

随机推荐

  1. 关于用String Calender类 计算闰年的Demo

    package cn.zmh.zuoye; import java.util.Calendar; public class StringRun { public static void main(St ...

  2. linux文件描述符fd(windows下的句柄)

    在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件.链接文件和设备文件 fd:file descriptor 文件描述符0,1,2分别给了标准输入.标准输出和错误输出. ls - ...

  3. Swift初体验之HelloWord+苹果Swift编程语言新手教程【中文版】

    AppDelegate.swift : <span style="font-size:24px;"><strong>// // AppDelegate.sw ...

  4. Scala入门到精通——第十六节 泛型与注解

    本节主要内容 泛型(Generic Type)简单介绍 注解(Annotation)简单介绍 注解经常使用场景 1. 泛型(Generic Type)简单介绍 泛型用于指定方法或类能够接受随意类型參数 ...

  5. Random Forest 与 GBDT 的异同

    曾经在看用RF和GBDT的时候,以为是非常相似的两个算法,都是属于集成算法,可是细致研究之后,发现他们根本全然不同. 以下总结基本的一些不同点 Random Forest: bagging (你懂得. ...

  6. Please enter a commit message to explain why this merge is necessary.

    Please enter a commit message to explain why this merge is necessary. 请输入提交消息来解释为什么这种合并是必要的 git 在pul ...

  7. SQL2012 尝试读取或写入受保护的内存。这通常指示其它内存已损坏

    今天打开SQL2012,突然就连接不了数据库.一開始还以为是某个server崩溃了.结果试了好几个.都还是如此,弹出提演示样例如以下: 尝试读取或写入受保护的内存.这通常仅仅是其它内存已损坏.(Sys ...

  8. MJRefresh实现刷新(使用它的Block方法)

    MJRefresh实现刷新(使用它的Block方法)   // // YFMVCPostListViewController.m // iOS122 // // Created by 颜风 on 15 ...

  9. oracle sql 超长报ORA-01460错误

    程序查找数据的时候报错了: ORA-01460: 转换请求无法实施或不合理 这是什么鬼?不合理你就提嘛,报错干什么. 程序原本好好的,现在突然报错了.数据库并没有什么更改. 后来猜测是因为执行的SQL ...

  10. IDEA 使用方法快捷键

    Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ ...