话说在前头:前端开发同学遇到这个问题不慌,因为接下来你要踩的坑我都帮你们踩完了,所以有了这一篇博客。希望能帮到你

   轮播组件:swiper@4.5.1 (4x稳定的最后一个版本)

   设备:ios版本15x ,14和16版本都挺好的,问题仅在ios15的版本

   出现现象:左右滑动卡顿,不连手,放开的这一瞬间会卡一下。在同一部手机的safari或微信中没有这个问题,仅仅在app中有这个问题。

  一些案例:https://ask.csdn.net/questions/7544894   https://juejin.cn/post/7023231843004579877

  当然全都没有解决办法,只是都遇到。

  我试过了网上几乎所有办法,3x和5x版本都换过,无果...

  ok,网上找不到解决办法,老规矩,上github翻翻issue,有用,但不是特别有用。

  办法1: 升级5x版本,有个新增的属性  cssMode  这个属性开启后用现代CSS Scroll Snap API。它不支持Swiper的很多功能,但可能会带来更好的性能。 会将一些js复杂的运算和过渡用css来代替

  但是:少了很多功能(不推荐)

var mySwiper = new Swiper('.swiper-container', { cssMode: true });

  办法2:css启用硬件加速(但是只能解决白屏闪烁,卡顿依旧)

1 .swiper-slide{
2   -webkit-backface-visibility: hidden;
3   -webkit-transform: translate3d(0,0,0);
4 }
5
6 .swiper-wrapper{
7   -webkit-transform-style: preserve-3d;
8 }

  办法3  https://github.com/nolimits4web/swiper/issues/4493

 1 function easeOut(currentTime, startValue, changeValue, duration) {
2 currentTime /= duration;
3 return -changeValue * currentTime * (currentTime - 2) + startValue;
4 }
5
6 function getTransitionSimulator(ele, distance, duration, callback) {
7 let handle;
8 let resolve;
9 return () => {
10 let promise = new Promise(res => {
11 resolve = res;
12 });
13 let startTime = performance.now();
14 cancelAnimationFrame(handle);
15 function _animation() {
16 let current = performance.now();
17 // distance to move this frame
18 let disVal = easeOut(current - startTime, 0, distance, duration);
19
20 callback(ele, disVal);
21 if ((current - startTime) / duration < 1) {
22 handle = requestAnimationFrame(_animation);
23 } else {
24 cancelAnimationFrame(handle);
25 resolve();
26 }
27 }
28 handle = requestAnimationFrame(_animation);
29 return promise;
30 };
31 }
32
33 swiper.on('setTranslate', (swiper, targetTransVal) => {
34 const wrapper = swiper.$wrapperEl[0]; // wrapper element
35 // when use transition to do animation
36 if (wrapper.style.transitionDuration !== '0ms') {
37 // get origin translate value
38 const curTransVal = this.swiper.getTranslate();
39 // cancel the animation of transition
40 wrapper.style.transitionDuration = '';
41 wrapper.style.transform = `translate3d(${curTransVal}px, 0px, 0px)`;
42
43 // use requestFrameAnimation to do animation my self
44 const transSimulator = getTransitionSimulator(wrapper, targetTransVal - curTransVal, 300, (el, val) => {
45 el.style.transform = `translate3d(${curTransVal + val}px, 0px, 0px)`;
46 });
47 await transSimulator();
48 // End the transition, call the callback (simulate the internal implementation of Swiper)
49 swiper.onSlideToWrapperTransitionEnd.call(wrapper, { target: wrapper });
50
51 }
52 })

    有用,但是只适用于整页整页滑动,多列并不是适用。

  办法4:用Mac电脑下载个xcode链接Iphone做一个Demo App 内嵌下你的H5 页面。看是否正常,如果正常的话。那毫无提问,问题不前端,让IOS开发去排查问题。顺利解决

  最后:我这边是ios开发定位到了,确实是App的某个地方影响了全局的轮播,卡了好多天的问题,唉~~,如果你们也遇到过,把你们的解决办法说一下吧!!

IOS App内嵌H5 swiper 轮播出现卡顿白屏闪烁的更多相关文章

  1. ios应用内嵌h5页面数据自动变色识别为手机号码的解决方法——手机号码拨号禁用IOS手机页面数字自动识别为手机号

    异常如下: ios应用内嵌h5页面,本来是设置了白色的数字,两三秒之后会自动变为黑色,然后点击的时候就会弹出是否拨号的提示: 解决方法: 添加如下meta标签,即可解决: <meta name= ...

  2. app内嵌H5踩坑

    内嵌的H5是用的vue2版本开发的,期间有很多的坑要踩: 1.调用app返回上一个页面不触发页面的onmouted和window.onPageShow app返回上一个页面调用的方法并不会出发vue的 ...

  3. 移动端开发利器vConsole.js,app内嵌H5开发时调试用

    vConsole:一个轻量.可拓展.针对手机网页的前端开发者调试面板,主要还是用于内嵌app页面时在手机上进行调试,打印完全和在PC端一样,方便大家找出问题所在. 不说废话直接进入主题,vConsol ...

  4. ios下app内嵌h5页面是video适配问题

    ios下做新闻详情用h5页面实现然后打包到app中,其中新闻详情页会有视频,安卓下video的poster可以做到适应video大小,但是ios下会按照poster图片大小将video等比撑大,但是视 ...

  5. app内嵌h5页面在ios手机端滑动卡顿的解决方法

    1.带滚动条的dom需加样式 -webkit-overflow-scrolling: touch;2.去掉 width:100%; height:100%

  6. app内嵌H5网页(webviewJavaScriptBridge)

    摘要:使用的插件为webviewJavaScriptBridge,app端需要引入一下这个包,html页面只需一段JS代码 与IOS交互 <! 申明交互(此处代码固定) > functio ...

  7. app内嵌H5调用分享

    最近产品提出了一个需求:我们在合作方的app中提供的部分页面中增加分享页面,具体要求是在3个二维码推广页面调用app的分享接口,分享方式有3种,分别是点击”分享链接“按钮调起分享,点击”分享图片“按钮 ...

  8. app内嵌h5分享到小程序分享功能

    if (this.GLOBAL.env !== 'production') { try { window.JSBridge.shareMiniProgramToWx('https://www.lexi ...

  9. app内嵌H5的上传图片的功能

    1.上传组件 <!-- - hasBorder {Boolean} cell底部边框,oneline 为 true 有效 - inlineBorder {Boolean} cell底部短边框 - ...

  10. app内嵌 h5页面 再滑动的时候 触发击穿底下的一些touchstart事件

    我们的目的是再滑动的时候 不要触发到touchstart事件. // 再滑动的时候无法点开视频 var is_scroll_start,is_scroll_end; $(window).on({ 't ...

随机推荐

  1. 安装scss版本号(不报错)

    npm install sass-loader@8.0.2 node-sass@4.14.1

  2. 2021-11-21:map[i][j] == 0,代表(i,j)是海洋,渡过的话代价是2, map[i][j] == 1,代表(i,j)是陆地,渡过的话代价是1, map[i][j] == 2,代表

    2021-11-21:map[i][j] == 0,代表(i,j)是海洋,渡过的话代价是2, map[i][j] == 1,代表(i,j)是陆地,渡过的话代价是1, map[i][j] == 2,代表 ...

  3. 2021-09-05:单词搜索 II。给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过 相邻的

    2021-09-05:单词搜索 II.给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词.单词必须按照字母顺序,通过 相邻的 ...

  4. 解决:Invalid HTTP_HOST header: '192.168.56.1:8001'. You may need to add '192.168.56.1' to ALLOWED_HOSTS.

    在setting.py下的ALLOWED_HOSTS=['*']添加'*'就可以解决显示不出来的问题.

  5. linux中使用jenkins自动部署前端工程

    1.去年在自己的服务器上安装了jenkins,说用来自己研究一下jenkins自动化部署前端项目,jenkins安装好了,可是一直没管,最近终于研究了一下使用jenkins自动化部署,以此记录下来. ...

  6. nginx发布vue 项目

    在本次使用nginx发布vue项目遇到 配置location 始终404 和 在项目子目录点击浏览器刷新出现404问题 使用nginx发布vue项目,为了方便测试就下载了一个nginx 放置自己目录下 ...

  7. centos安装Vue

    一直以来,有关LINUX的系统安装包,都是比较随意,直接使用yum进行或者apt-get 安装 标准安装流程是什么的呢.我们通过centos安装Vue进行展示 1 首先下载安装nodejs , htt ...

  8. flutter系列之:做一个会飞的菜单

    目录 简介 定义一个菜单项目 让menu动起来 添加菜单内部的动画 总结 简介 flutter中自带了drawer组件,可以实现通用的菜单功能,那么有没有一种可能,我们可以通过自定义动画来实现一个别样 ...

  9. 消失的死锁:从 JSF 线程池满到 JVM 初始化原理剖析

    一.问题描述 在一次上线时,按照正常流程上线后,观察了线上报文.接口可用率十分钟以上,未出现异常情况,结果在上线一小时后突然收到jsf线程池耗尽的报警,并且该应用一共有30台机器,只有一台机器出现该问 ...

  10. Gazebo、Rviz 结合 ORB-SLAM3 实现运动规划及定位

    博客地址:https://www.cnblogs.com/zylyehuo/ 基于以下内容,详见博客链接 基于机器人自主移动实现SLAM建图 - zylyehuo - 博客园 (cnblogs.com ...