起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5499|回复: 9

[分享] 苹果状态栏问题

  [复制链接]

40

主题

127

帖子

395

积分

中级会员

Rank: 3Rank: 3

积分
395
QQ
发表于 2017-5-5 15:41:07 | 显示全部楼层 |阅读模式
Wex5对于苹果状态栏重合的处理不行。
起因:苹果APP的顶部不会像安卓一样,预留出状态栏的位置。
官方本来提供了支持:
自动检测苹果系统,给panel-top预留位置,但这个处理不合适:
1.IOS10对于Wex5官方的支持不适用了,就导致状态栏重合了。
2.后来官方提供了一个JS,可以支持浏览器判断,但是却会导致showpage出来的页面都自动预留空白,而且top和content重合。
http://bbs.wex5.com/forum.php?mo ... ypeid%26typeid%3D43
3.所以,建议摈弃Wex5的判断,自己判断预留得了。

代码如下:
放在Index页面的onLoad事件里面,自己定义控制就行了。

var ua = navigator.userAgent.toLowerCase();       
                if (/iphone|ipad|ipod/.test(ua)) {
                          $(".appleTop").css({"top":"20px"});       
                } else if (/android/.test(ua)) {
                        //  $(".appleTop").css({"top":"20px"});
                }else{
                       
                }

40

主题

127

帖子

395

积分

中级会员

Rank: 3Rank: 3

积分
395
QQ
 楼主| 发表于 2017-5-9 14:40:24 | 显示全部楼层
本帖最后由 小明明 于 2017-9-11 10:12 编辑

额。。。appletop是我自己定义的Class。。。。 123.png

其实我已经说到这个份上了,就差把代码要过来改了。

如上:这是index页面,整个APP所有页面其实都是在mainContainer中,我把pages上面预留20px,App的其他部分就会挤压到下面,这20px就是给状态栏用的。
然后因为页面背景色是白的,而状态栏图标等也是白的,这里就加了个div 20px高,背景色黑色,充当状态栏的背景。

问题就这样解决了:
本质状态栏还是和APP重合,只是我们在APP里预留20px位置给状态栏,防止影响到其他按钮和文字。

2017-09-08----------------------------------------------------
补充:在实际使用的过程中又碰到几个问题:
1.顶部预留的白色有时会和状态栏颜色重叠。
解决方法: 我采取的方法是,选了一个折中色,因为苹果状态栏不是黑色就是白色,我选了棕灰色,就会两者都显示。
正规解决方法:其实苹果会自动检测APP顶部颜色,状态栏进行自适应,所以最好的做法是:当时苹果系统时,让所有的页面的panel的top块预留20px距离

2.使用Bootstrap的dialog时,因为dialog是绝对定位,与顶部隔开一段距离,所以现象就是dialog和状态栏重合了。
解决方法:我们在苹果系统的判断代码里给modal (bootstrap Class)定位margin-top:20px即可

3.Wex5自带的Dialog跳转模式  this.comp("windowDialog2").open(); 也是与bootstrap  dialog一样的问题,
解决方法:同上

2017-09-11--------------------------------------------------
基于Wex5官方给出的控制状态栏颜色的cordova,就可以不使用中间色,也不需要控制所有的panel-top了。
只要在index页中预留top 20px,然后选择需要的状态栏颜色即可。
http://docs.wex5.com/cordova-plugin-statusbar/

欢迎补充
回复 支持 1 反对 0

使用道具 举报

39

主题

125

帖子

1753

积分

金牌会员

Rank: 6Rank: 6

积分
1753
QQ
发表于 2017-5-5 16:05:01 | 显示全部楼层
.appleTop 这个是panel的样式?
回复 支持 反对

使用道具 举报

50

主题

188

帖子

734

积分

高级会员

Rank: 4

积分
734
QQ
发表于 2017-5-6 16:06:36 | 显示全部楼层
楼主,我现在遇到了一样的问题,请问你这个的“.aooleTop”是那个组件的class
回复 支持 反对

使用道具 举报

27

主题

89

帖子

197

积分

初级会员

Rank: 2

积分
197
QQ
发表于 2017-5-6 19:22:39 | 显示全部楼层
是啊!.appleTop是什么啊?
回复 支持 反对

使用道具 举报

50

主题

188

帖子

734

积分

高级会员

Rank: 4

积分
734
QQ
发表于 2017-5-13 02:50:48 | 显示全部楼层
小明明 发表于 2017-5-9 14:40
额。。。appletop是我自己定义的Class。。。。

其实我已经说到这个份上了,就差把代码要过来改了。

多谢楼主的分享,我项目里的页面很多都是凑起来的,我的主页面是白色,现在IOS系统默认的状态栏字体也是白色,所以在主页面看不到状态栏,有没有方法可以改变字体的颜色,UI设计有背景色的字体为白色,没背景色的字体为黑色,能不能给个思路。多谢
回复 支持 反对

使用道具 举报

40

主题

127

帖子

395

积分

中级会员

Rank: 3Rank: 3

积分
395
QQ
 楼主| 发表于 2017-5-15 09:22:53 | 显示全部楼层
zangwill 发表于 2017-5-13 02:50
多谢楼主的分享,我项目里的页面很多都是凑起来的,我的主页面是白色,现在IOS系统默认的状态栏字体也是 ...

改变苹果状态栏的字体颜色是不现实了,先不说有没有Cordova,很可能苹果也不允许APP做这个操作。
就用我上面的方法就可以,上面留20px黑色背景div,整体看起来和安卓效果一样,不影响。
如果觉得不符合UI的设计,那就让UI改吧。。。。。希望不要被砍死。。
回复 支持 反对

使用道具 举报

50

主题

188

帖子

734

积分

高级会员

Rank: 4

积分
734
QQ
发表于 2017-5-15 10:44:05 | 显示全部楼层
小明明 发表于 2017-5-15 09:22
改变苹果状态栏的字体颜色是不现实了,先不说有没有Cordova,很可能苹果也不允许APP做这个操作。
就用我 ...

UI照着原生的来,原生能做出来的wex5必须也要做出来,头疼啊
回复 支持 反对

使用道具 举报

40

主题

127

帖子

395

积分

中级会员

Rank: 3Rank: 3

积分
395
QQ
 楼主| 发表于 2017-9-11 10:12:46 | 显示全部楼层
zangwill 发表于 2017-5-15 10:44
UI照着原生的来,原生能做出来的wex5必须也要做出来,头疼啊

http://docs.wex5.com/cordova-plugin-statusbar/  看看这个
回复 支持 反对

使用道具 举报

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
发表于 2018-5-12 15:52:29 | 显示全部楼层
我一直在用的是在页面的标题栏的组件上加个x-titleBar的class,目前看还没其他问题啊
传说中路过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-24 07:49 , Processed in 0.072461 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表