当前位置:首页 > 民俗文化

texture iOS 开发一定要尝试的 Texture

前言

我会根据滑动的流畅度来判断本文涉及的性能问题,包括掉框和一些实践经验

ASDK已更名为纹理(https://github。我以前称之为ASDK。

编译环境:MacOS 10.13.3,Xcode 9.2

测试机型:iPhone 6 10.3.3,iphone7 11.2.1,iPhone 11 . 2 . 5,默认iPhone 6

TableViewCell/CellNode包含在TableView/TableNode中:默认复杂度为平均,包括1~2张图片和2~4个文字显示,图片有圆角

列表滑动堵塞的原因及优化

大牛们已经把原因说的很清楚了,结果就是16ms不够渲染一帧,导致丢帧

下面是一些已经尝试过的优化:

里脊肉

使用一张圆角图片覆盖, 经典文章 Corner Rounding(http://texturegroup.org/docs/corner-rounding.html), HYBImageCliped(http://texturegroup.org/docs/corner-rounding.html )也是这么做的

异步裁剪图片: 通过 UIGraphics 对图片进行裁剪, 可能造成内存暴涨

行高缓存

我已经说了很久了。除了UITableView-FDTemplateOutlell(https://github。QMUI(https://github.com/QMUI/QMUI_iOS)还提供了一套缓存行高度方案

数据预处理

具体来说,JSON转换成Model后,文本就变成了富文本,再处理一些弱逻辑,就可以直接显示赋值了

咳咳,这个感觉没什么效果

图形预处理

例如,处理图片蒙版或固定图标,一般直接使用多层视图来实现

我试着在一幅大图上画三幅小图,然后展示出来。结果除了异步复用,内存爆炸,最后老老实实用多视图实现

为什么要用ASDK

图形的异步渲染

一般来说,我们认为UIKit不能渲染到非主线程。一旦这样做,可能会造成死机、显示异常等问题。为什么ASDK可以?因为ASDisplayNode是线程安全的,所以当创建节点时,它不会立即在其中创建新的UIView和CALayer。直到主线程第一次访问它,才会生成相应的对象。此外,通过图层预合成和基于Runloop的异步并发,使其具有更好的asasynctransactiongroup性能(https://github . com/texture group/texture/blob/B7 CD 0b 16567 a9 EB 10e 58 F4 cc 0886 a 145 DC 5273 b 8/source/details/transactions/_ asasynctransactiongroup . m)

这个特性带来的相关实践经验是:安心异步绘图,比如偷工减料,加蒙版,足以破坏UIKit中的生命,内存暴涨,异步复用,性能差

但是在低性能设备下还是会有明显的空白色

预加载数据和对象

首先,我们来看一个Gif体验。事实上,ASDK发展完成后也是如此。有种网络速度越来越快的错觉

与UIKit原生控件相比,ASDK的rangecontroller、astable view和ascellectionview可以用来监视可视的视图区域,维护工作区域,触发网络请求并在正确的时间绘制,以及异步布局单元格

建议在此阅读:预加载和智能预加载(iOS)(https://draveness.me/preload)

不同于本机控件的重用机制

一个细胞

这意味着列表只显示一种样式,而表格视图只需要注册一个单元格

在这种情况下,如果一些常规优化是适当的,滚动的流畅度仍然是可接受的(与ASDK的差距很小,但它仍然可以用肉眼区分)

此时的差距主要体现在列表中一些数据的第一次显示,以及加载分页时TableView的等待时间过长。当然这两点是可以不断优化解决的

相反,就是来回滑动显示的数据,两者差距很小,大概是59.7-59.9和59.9的差距(我在胡说八道)

综上所述,经过适当的优化,UIKit与ASDK的差距在单细胞下并不明显

各种细胞

这意味着一个列表中有许多不同的样式,而TableView必须通过注册n Cell来实现

在这种情况下,假设有五种单元格,屏幕可以同时显示六个单元格。这时如果第一屏只是显示全部五种细胞,那么后续的滑动情况就会和单个细胞的表现一致。如果第一屏只显示一种内容,其他四种都没有出现在屏幕上,那么当某一种第一次出现在屏幕上时,就会出现明显的堵塞;我尝试过解决这个问题,提前创建所有Cell实例对象,缓存重用同一个子视图,异步预画成图片,缓存(pit),这些都收效甚微

不用说,ASDK仍然是59.9

复用差异

我喜欢也讨厌TableView的重用机制。方便之处在于直接与数据绑定后,可以很容易的更新和修改。只保证setModel简洁是可以的,但是业务绑定多的时候就麻烦了。

下面重点介绍表节点。Table Node的重用机制是没有重用,只有缓存,每个CellNode都是全新的,所以会有一些特殊的地方:

CellNode和数据源之间没有绑定关系:即使创建后删除了数据源,TableNode仍然可以正常显示

数据直接决定了创建什么样的CellNode:这个很重要。TableViewCell的呈现方式大致如下:add 空 false data子视图-->:数据填充-->:涉及到布局或者图文时刷新比较复杂

CellNode只有一步:添加真实数据的子视图;因此,可以根据业务逻辑直接处理控件和布局,而无需刷新一次或多次

演示:这里的要求是每组一张大图+N张小图,每组3到5张

解决方案:TableView的方式是创建五个,按照数字显示下面两种或两种Cell,分别对应3和5的情况。另外,最重要的是:祈祷数据正常,每组数据只有3、5个。

这时候使用TableNode就灵活多了,可以根据需要(数据量)添加所需的子视图。我的想法是把上面的大图搞定,把剩下的两张加在一行,就算总数是偶数,也没有额外的消耗。详见丹麦https://github.com/Didez/asdk-demo/tree/master/asdkdemo。

灵活布局

ASDK使用灵活布局,面向对象

偷拍

具体比较:iOS上的FlexBox布局(https://juejin.im/post/5a33a6926fb9a045104a8d3c)

简单来说只有一个缺点,就是学习曲线比Frame AutoLayout陡,优点是性能相当于Frame,入门后比AutoLayout简单

相关链接

视频剪辑

AsyncDisplayKit State of the Code (WWDC 2016)(https://www.youtube.com/watch?v=8ngXakpE2x8&t=838s)

演示

包含无限滚动和不定子视图的 Demo(https://github.com/didez/ASDK-Demo/tree/master/ASDKDemo)作者: ConverSunhttps://didee.cn/2018/01/29/iOS-ASDK/iOS开发整理发布,转载请联系作者授权

1.《texture iOS 开发一定要尝试的 Texture》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《texture iOS 开发一定要尝试的 Texture》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1578639.html

上一篇

林雨申电视剧 林雨申主演过的电视剧

下一篇

三吏三别分别指什么 杜甫的三吏三别分别指什么

曲影 观众网西北总部落户西安,AI粉丝大数据助力古城夜经济大发展

  • 曲影 观众网西北总部落户西安,AI粉丝大数据助力古城夜经济大发展
  • 曲影 观众网西北总部落户西安,AI粉丝大数据助力古城夜经济大发展
  • 曲影 观众网西北总部落户西安,AI粉丝大数据助力古城夜经济大发展

rownum 【干货分享】ROWNUM在达梦数据库中的使用

  • rownum 【干货分享】ROWNUM在达梦数据库中的使用
  • rownum 【干货分享】ROWNUM在达梦数据库中的使用
  • rownum 【干货分享】ROWNUM在达梦数据库中的使用

遥望网络 遥望网络:前瞻布局微信生态流量,探索消费品电商、知识付费等多样化流量变现模式,星期六17.7亿收购88.6%股权

  • 遥望网络 遥望网络:前瞻布局微信生态流量,探索消费品电商、知识付费等多样化流量变现模式,星期六17.7亿收购88.6%股权
  • 遥望网络 遥望网络:前瞻布局微信生态流量,探索消费品电商、知识付费等多样化流量变现模式,星期六17.7亿收购88.6%股权
  • 遥望网络 遥望网络:前瞻布局微信生态流量,探索消费品电商、知识付费等多样化流量变现模式,星期六17.7亿收购88.6%股权

东北财经大学2019录取分数线 东北财经大学录取分数线2019(在各省市录取数据)

  • 东北财经大学2019录取分数线 东北财经大学录取分数线2019(在各省市录取数据)
  • 东北财经大学2019录取分数线 东北财经大学录取分数线2019(在各省市录取数据)
  • 东北财经大学2019录取分数线 东北财经大学录取分数线2019(在各省市录取数据)

勃艮第怎么读 读数据,看趋势,究竟哪些勃艮第葡萄酒在中国更好卖?

  • 勃艮第怎么读 读数据,看趋势,究竟哪些勃艮第葡萄酒在中国更好卖?
  • 勃艮第怎么读 读数据,看趋势,究竟哪些勃艮第葡萄酒在中国更好卖?
  • 勃艮第怎么读 读数据,看趋势,究竟哪些勃艮第葡萄酒在中国更好卖?
物价上涨率 这份数据告诉你2019的生活压力有多严峻!

物价上涨率 这份数据告诉你2019的生活压力有多严峻!

图片来源:网络图片来源:网络2019年,人们的生活压力似乎比以前大得多。 我没有遇到任何金融动荡,也没有受到战争的影响。然而,当地产品的价格非但没有下降,反而明显上涨。 且不说让人倍感压力的房价持续上涨,就连过去的普通猪肉价格都高得让人害怕。甚至有网友嘲讽道:“我终于明白了没吃过猪肉是什么...

山东建筑大学图书馆 山东建筑大学图书馆成功办万方数据库文献检索大赛

5月5日下午2时,万芳数据检索大赛在山东建筑大学图书馆电子阅览室成功举行。现场有50多名同学参加了集中答题。 本次比赛由山东建筑大学图书馆和上海万芳数据有限公司联合举办,山东建筑大学图书馆志愿者协会协办。比赛的方式是在线答题,指定时间内集中答题结合个人免费登录系统。本次比赛将选出10名个人...

数据建模 浅谈数据分析和数据建模

51CTO网络+首届中国APP创新评选大赛>; 大数据应用有几个方面,一是效率提升,帮助企业提高数据处理效率,降低数据存储成本。二是对业务给予指导,如精准营销、反欺诈、风险管理、业务提升等。以前企业都是通过线下渠道联系客户,客户数据不完整,只能用财务数据进行业务运营分析,缺少客户身边的个人...