Tag: Texture

纹理最佳实践2

纹理最佳实践#2 LayoutSpec 内容元布局和堆栈元素。 消息气球布局(layout진메세메세지내용)을이미지와이같가수가있고 消息气球尾巴:말풍선말풍선리 消息气球内容:말풍선 消息提示框内容。 媒体领域: 消息文本区域:메세지텍스트 Stack기으지가StackLayoutSpec으로布局기본설계가끝이난다。 2. AS Stack LayoutSpec布局子布局中的布局。 이건또이무슨말? 각,각子布局의를정리를다음과다。 媒体布局은比率은이변해야한다。 。로필은위치해야한위치해야한다。 15.0分하향해야한다。 订婚(마진은)마진은5.0pt정도가진다。 이렇게눈으로봤을이정리가것이다。 어떤과항목별과과다다다다다다다다다。 로하나씩풀어보자면 媒体布局은比率은이변해야한다。 :比率AS Ratio LayoutSpec LayoutSpec。 。로필은위치해야한위치해야한다。 : AS Relative LayoutSpec , AS Absolute LayoutSpec layoutPosition相对应。 在AS Inset LayoutSpec插入底部的.infinity로finity다。 in지만사주의.infinity로잡았는데이 레다 일으킵니다。 15.0分하향해야한다。 : AS Inset LayoutSpec .Infinity布局图。 (참고:layoutPosition타입은CGPoint입니다。) 订婚(마진은)마진은5.0pt정도가진다。 :해하셨으면이해하셨으면이거거제는겁니다。 布局布局。 。지다보면수올릴가。다。 […]

气泡,气泡,气泡…

气泡可能意味着愉悦而轻松的沐浴,或者对某人来说只是个不错的杜松子酒。 在Tuenti,当有人说Bubbles时,我们对会话组件进行了重新设计。 该组件对于我们的应用程序非常重要。 我们将所有与其他朋友或其中一些朋友共享的内容放置在此处。 例如,我昨天发送给您的短信,由于找不到您而不得不与您共享的位置或仅仅是我打电话预订餐厅的电话。 为了由用户以容易和愉快的方式消费,必须显示越来越多的内容。 它由我们的出色设计师负责,可以确定没有问题! 他们提出了可以针对各种新内容和现有内容进行扩展的设计,但是工程师始终知道必须在代码中实现的那些工件。 “圆角太多!”,“渲染文字会影响性能……”,“滚动条不会很平滑……” 是的 很多评论,很多投诉,但我们所有人都希望得到最好的方法。 我们在谈论UI,所以让我们看看UIKit。 这是我们基于项目的框架。 从此开始,我们发现了一些严重影响性能的点: 渲染文本很昂贵。 单元格的类型很多,大多数都非常不同,主要是它们的高度。 增加拐角半径可能会使主螺纹过载。 然后,我们问自己: 我们应该在没有XIB / 情节提要的情况下进行绘制吗? 我们不应该使用自动排版并获取每一帧吗? 单元格的高度呢? 由我们计算? UIKit进行了很多更改,但似乎已经得到了很大的改进……恕我直言,UIKit的性能越来越差,我不知道这对某人是否重要。 使用单元格的自动高度,我们可以看到主线程使用率很高,并且该应用程序无法使用。 带有多行的UILabel即使没有电话/ URL检测之类的基本功能,也会影响性能。 似乎我们需要像CoreText这样的低级库。 我们仍然尚未启动该项目,但发现了很多问题…… 我们的项目基于Model-View-Presenter ( MVP )。 M和P已经解决,因此让我们使用“虚拟”视图V和Texture框架进行测试, Texture框架已在我们有趣的HackMeUp中经过PoC测试! 而且还不错🙂 好吧,这是“惊人的”,但是……什么是纹理 ? “纹理是建立在UIKit之上的iOS框架,即使最复杂的用户界面也可以保持平滑和响应。” 噢,但是…… 纹理到底是什么? 基本上, Texture是一个框架,该框架内部使用UIKit来呈现视图的UI,从而优化了后台中的每个计算,这意味着避免使用主线程并失去FPS。 在Texture世界中,每个UI组件都是一个节点。 它们基本上是UI组件的包装。 节点提供了非常相似的接口,因此将其集成是一个优势。 让我们从ASTableNode开始,它将取代我们的UITableView。 我们需要创建ASCellNodes来表示每个内容,而不是UITableViewCell。 ASTableNode可以确定单元节点的高度。 这是否意味着它像带有UITableViewAutomaticDimension的UITableView一样工作 ? 它没有,它做得更好。 此外,它还使用其智能预加载功能来计算背景中的高度。 它适用于三种状态: […]