Graver

高效的 UI 渲染框架
授权协议 Apache-2.0
开发语言 Objective-C
所属分类 开发工具、 界面原型设计工具
软件类型 开源软件
地区 国产
投 递 者 何星鹏
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Graver 是一款高效的 UI 渲染框架,它以更低的资源消耗来构建十分流畅的 UI 界面。Graver 独创性的采用了基于绘制的视觉元素分解方式来构建界面,得益于此,该框架能让 UI 渲染过程变得更加简单、灵活。

功能特点

  • 性能表现优异

Graver 在 FPS、CPU、Memory 各方面的指标均表现优异。

  • “一站式”异步化

Graver 从文本计算、样式排版渲染、图片解码,再到绘制,实现了全程异步化,并且是线程安全的。使用 Graver 可以一站式获得全部性能优化点。

  • 性能消耗的“边际成本”几乎为零

Graver 渲染整个过程除画板视图外完全没有使用 UIKit 控件,最终产出的结果是一张位图(Bitmap),视图层级、数量大幅降低。

  • 渲染速度快

Graver 并发进行多个画板视图的渲染、显示工作。得益于图文混排技术的应用,达到了内存占用低,渲染速度快的效果。由于排版数据是不变的,所以内部会进行缓存、复用,这又进一步促进了整体渲染效率。Graver 既做到了高效渲染,又保证了低时延页面加载。

  • 以“少”胜“繁”

Graver 重新抽象封装 CoreText、CoreGraphic 等系统基础能力,通过少量系统标准图形绘制接口即可实现复杂界面的展示。

  • 基于位图(bitmap)的轻量事件交互系统

如上述所说,界面展示从传统的视图树转变为一张位图,而位图不能响应、区分内部具体位置的点击事件。Graver 提供了基于位图的轻量事件交互系统,可以准确识别点击位置发生在位图的哪一块“绘制单元”内。该“绘制单元”可以理解为与我们一贯使用的某个具体UI控件相对应的视觉展示。使用 Graver 为某一视觉展示添加事件如同使用系统 UIButton 添加事件一样简单。

  • 全新的视觉元素分解思路

Graver 一改界面编程思路,与传统的通过控件“拼接”、“添加”,视图排列组合方式构建界面不同,它提供了十分灵活、便捷的接口让我们以“视觉所见”的方式构建界面。

  • 发现美团开源了一个UI框架,以下是官方说明 Graver是一款高效的 UI 渲染框架,它以更低的资源消耗来构建十分流畅的 UI 界面。Graver 独创性的采用了基于绘制的视觉元素分解方式来构建界面,得益于此,该框架能让 UI 渲染过程变得更加简单、灵活。 原理来说,就是讲以前多层级描述的UIKit树转成自定义model交由CoreText去渲染,生成一张单层的bitmap。 性能优化的切入点可以

  • 近些年,移动端动态化技术可谓是“百花齐放”,其中的渲染性能也是动态化技术一直在探索、研究的课题。美团的开源框架 Graver 也为解决动态化框架的渲染性能问题提供了一种新思路:关于布局,我们可以采用“画控件”方案替代传统的“拼控件”方式。本文尝试给出一些探索思考与实践经验的分享。 前言 动态化技术指的是不依赖程序安装包,就能进行动态实时更新页面的技术。特别是对于电商、社交等需要快速迭代、实时调整的

  • 4484: The Graver Robbers' Chronicles 题目连接: http://acm.scu.edu.cn/soj/problem.action?id=4484 Description One day, Kylin Zhang and Wu Xie are trapped in a graveyard. They find an ancient piece of parchm

 相关资料
  • Sprite 组件参考 Label 组件参考 Mask 组件参考 Graphics 组件参考 RichText 组件参考 UIStaticBatch 组件参考

  • 本文向大家介绍如何提高组件的渲染效率呢?相关面试题,主要包含被问及如何提高组件的渲染效率呢?时的应答技巧和注意事项,需要的朋友参考一下 function Child({seconds}){ console.log('I am rendering'); return ( I am update every {seconds} seconds ) }; export default React.mem

  • 我使用的是Angular用户界面-Grid 2.0.12,是否可以在给定的单元格中添加超链接,或者任何类型的html代码?我一直在尝试遵循这个提示:在ng-Grid的任何人中添加html链接,尽管它似乎不适用于用户界面-Grid,可能是因为ng-Grid过去的行为不同,或者因为现在的语法不同。

  • 我刚刚安装了grails渲染插件,并想使用它来生成PDF文件。我创建了简单的模板,但此插件不渲染检查输入元素。当我将输入写为以下内容时: 我收到以下错误消息: 当我添加结束标记时,如下所示: 我在PDF中没有任何检查元素。我不是说,我想要在交互模式下进行检查,但是,我想要一个看起来像复选框的图像

  • 图片

  • 在 Hexo 中,有两个方法可用于渲染文件或字符串,分别是非同步的 hexo.render.render 和同步的 hexo.render.renderSync,这两个方法的使用方式十分类似,因此以下仅以非同步的 hexo.render.render 为例。 渲染字符串 在渲染字符串时,您必须指定 engine,如此一来 Hexo 才知道该使用哪个渲染引擎来渲染。 hexo.render.rend