美文网首页
Texture | ASVideoNode 导致列表卡顿的优化经

Texture | ASVideoNode 导致列表卡顿的优化经

作者: 无夜之星辰 | 来源:发表于2020-01-12 14:23 被阅读0次

需求是视频自动播放,并且列表预加载。

优化 1:

关闭自动播放:

videoView.shouldAutoplay = false

在 node 处于可见状态的时候播放,不可见时暂停:

override func didEnterVisibleState() {
    super.didEnterVisibleState()
    videoView.play()
    if let currentTime = currentTime {
        videoView.currentItem?.seek(to: currentTime)
    }
}

override func didExitDisplayState() {
    super.didExitDisplayState()
    videoView.pause()
    if let currentTime = videoView.currentItem?.currentTime() {
        self.currentTime = .init(value: currentTime.value, timescale: currentTime.timescale)
    }
}

优化 2:

关于获取视频时长:

通过AVURLAssetduration获取时长会卡顿,然后就换了一种方案:

func videoNode(_ videoNode: ASVideoNode, didSetCurrentItem currentItem: AVPlayerItem) {
    currentItem.addObserver(self, forKeyPath: "duration", options: .new, context: nil)
}


// MARK: - KVO

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    guard let duration = self.videoView.currentItem?.duration else {
        return
    }
    let value: Int = Int(duration.value)
    let scale: Int = Int(duration.timescale)
    let time = value / scale
    
    let minutes = time / 60
    let seconds = time % 60
    
    let minutesString = String(format: "%.2d", minutes)
    let secondsString = String(format: "%.2d", seconds)
    
    durationLabel.attributedText = NSAttributedString.attributedString(string: "\(minutesString):\(secondsString)", font: .systemFont(ofSize: 12, weight: .medium), color: .white)
}

用了Texture,我才知道什么叫做绝对丝滑。

从此以后别跟我说什么列表卡顿优化,都是渣渣。

相关文章

  • Texture | ASVideoNode 导致列表卡顿的优化经

    需求是视频自动播放,并且列表预加载。 优化 1: 关闭自动播放: 在 node 处于可见状态的时候播放,不可见时暂...

  • Runloop优化列表滑动卡顿

    Runloop优化列表滑动卡顿

  • 卡顿优化

    卡顿优化 - CPU 卡顿优化 - GPU 离屏渲染 卡顿检测 耗电优化

  • 21-性能优化

    一、CPU和GPU 二、卡顿产生的原因和优化 卡顿优化-CPU 卡顿优化-GPU 卡顿监测 监控卡顿的demo:推...

  • Android性能优化总结

    性能优化: 1. 卡顿优化 绘制问题布局复杂导致 -》 使用hierarchy viewer分析。减少嵌套层级,使...

  • iOS底层原理 - 性能优化 之 卡顿优化

    面试题引发的思考: Q: 列表卡顿的原因?如何优化? 卡顿主要是因为在 主线程 执行了 比较耗时 的操作。 Q: ...

  • iOS面试——项目篇

    性能相关 1- 项目中造成Tableview等列表滑动卡顿的原因有哪些?你是如何优化的? 答:造成卡顿的原因主要由...

  • iOS 性能优化

    iOS的性能优化主要可提现在以前的几个方面:卡顿优化、耗电优化、启动优化、安装包的瘦身。 1、卡顿优化 在了解卡顿...

  • 列表类控件卡顿优化

    1、使用ConstraintLayout减少布局层级。 2、可以的话,设置RecyclerView布局等高,然后设...

  • iOS 列表卡顿优化记录

    首先介绍出现问题场景:实时聊天的群聊列表,消息过来会进行频繁刷新,在压力测试下,大约0.5s会刷新一次。列表中包含...

网友评论

      本文标题:Texture | ASVideoNode 导致列表卡顿的优化经

      本文链接:https://www.haomeiwen.com/subject/mrwiactx.html