首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

View编程指南

Windows本身没有任何可见的内容应用程序的views提供了一个基本的容器。 views定义了您想要填充某些内容的windows的一部分。...View的绘图周期 UIView类使用按需绘制模型来呈现内容一个view第一次出现在屏幕上,系统要求它画出其内容。系统捕获内容的snapshot,并将该snapshot用作view的视觉表示。...绘图主要使用bounds属性。bounds矩形在View的本地坐标系中表示。矩形的默认原点是(0,0),其大小与frame矩形的大小相匹配。您在此矩形内绘制任何东西都是view可见内容的一部分。...任何子view的frame矩形仍然有效,因为它们是相对于view的bounds View的运行时交互模型 每当用户与的用户界面进行交互,或者自己的代码以编程方式更改某些内容,都会在UIKit内部发生一系列复杂的事件来处理该交互...将自定义view的属性值设置为YES告诉UIKit它不需要在view后面呈现任何内容。 较少的渲染导致绘图代码的性能提高,并且通常会受到鼓励。

2.2K20

OpenGL ES编程指南(四)

例如,应该在一个上下文中加载顶点数据后调用glFlush函数,以确保其内容已准备好被另一个上下文检索。与其他iOS API(如Core Image)共享OpenGL ES对象建议也适用。...为了避免这种情况,请维护需要查询的任何状态的副本,并直接访问它,而不是调用OpenGL ES。 发生错误时,OpenGL ES设置一个错误标志。...使用双缓冲来避免资源冲突 应用程序和OpenGL ES同时访问OpenGL ES对象,会发生资源冲突。...GPU在一个纹理上运行时,CPU修改另一个纹理。 初次启动后,CPU或GPU都不处于闲置状态。 尽管显示了纹理,该解决方案几乎适用于任何类型的OpenGL ES对象。...组织绘图调用以最小化状态更改 更改OpenGL ES状态不会立即生效。相反,发出绘图命令,OpenGL ES执行必要的工作以绘制一组状态值。

1.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

OpenGL ES编程指南(二)

这些类扩展了用于绘制视图内容和管理视图表示的标准UIKit设计模式。 因此,您可以将精力主要放在的OpenGL ES渲染代码上,并让应用程序快速启动并运行。...与标准UIKit视图一样,GLKit视图按需呈现其内容。首次显示视图,它将调用绘图方法 - Core Animation缓存呈现的输出并在显示视图显示它。...创建帧缓冲区对象,您可以精确控制其颜色,深度和模板数据的存储。 通过将图像附加到帧缓冲区来提供存储,如下图所示。 最常见的图像附件是一个渲染缓冲区对象。...虽然应用程序可以在修改对象和提交绘图命令(如图4-3中的虚线所示)之间进行切换,如果每帧仅执行一次每一步,则运行速度更快。...虽然应用程序可以在修改对象和提交绘图命令之间进行切换(如虚线所示),如果只执行一次每个步骤,则运行速度更快。

1.8K20

OpenGL ES编程指南(三)

如果使用GLKit view和view controller,并且只在绘图方法中提交OpenGL ES命令,那么的应用移动到背景的应用自动正确运行。...如果您不使用GLKit view和view controller,或者如果您在GLKView绘图方法外提交OpenGL ES命令,则必须执行以下步骤以确保应用程序不会在后台终止: 在应用程序delegate...简单的目标是你的应用程序分配的帧缓冲区来保存渲染结果。应用程序位于后台,它对用户不可见,并且可能不会使用OpenGL ES呈现任何内容。...要以Retina显示器的全分辨率绘制应该更改CAEAGLLayer对象的比例因子以匹配屏幕的比例因子。 支持具有高分辨率显示器的设备应该相应地调整应用程序的型号和纹理资源。...外部显示器的分辨率及其内容比例因子可能与主屏幕的分辨率和比例因子不同;渲染帧的代码应调整为匹配。 在外部显示器上绘图的步骤与在主屏幕上运行的步骤几乎完全相同。

1.8K10

matplotlib - matplotlib 教程

如果是 “类数组(array-like)” 对象(如pandas数据对象和np.matrix)可能或可能不会按预期工作。最好在绘图之前将它们转换为np.array对象。...有些人在python shell中以交互方式使用matplotlib,并在键入命令弹出绘图窗口。有些人运行Jupyter笔记本并绘制内联图以进行快速数据分析。...要显示绘图需要执行以下操作: plt.show() 现在你看到图像,你的终端命令行没有响应; show() 命令阻止其他命令的输入,直到手动终止绘图窗口。 被迫使用阻塞功能?...这有什么用,假设需要一个脚本,将文件内容绘制到屏幕上。您想查看该图,然后结束脚本。如果没有一些阻塞命令(如show()),脚本会闪现图像,然后立即结束,屏幕上不显示任何内容。...摘要 在交互模式下,pyplot功能自动绘制到屏幕上。 交互式绘制,如果除了pyplot函数之外还使用对象方法调用,则只要想要刷新绘图,就调用draw() 。

4.5K31

WebRender:让网页渲染如丝顺滑

依靠 WebRender,我们希望应用程序以每秒 60 帧(FPS)乃至更快的速度运行:无论显示器有多大,页面每帧发生多少变化。这是可以做到的。...如果页面大部分内容发生变化,这就不够用了。所以又出现了处理这些情况的新技术。 图层与合成介绍 页面的大部分发生变化时,使用图层(layer)方便很多...至少在某些情况下是如此。...由它管理 GPU 中发生的合成工作。这意味着如果主线程正在执行某些操作(如运行 JavaScript),则合成器线程仍然可以处理其他工作,如在用户滚动滚动内容。 ?...他们以一种意想不到的方式做到了这一点...他们只是重绘整个屏幕,无需创建那些用于最小化绘制内容的失效处理矩形和图层。 这样渲染网页不会更慢吗? 如果在 CPU 上绘制的话,的确更慢。...这些内容目前是被 CPU 绘制成位图的。然后把它们上传到 GPU 的纹理缓存中。这个缓存在不同帧之间被保留,因为它们通常不会改变。 虽然这种绘制工作是由 CPU 完成的,速度仍有提升空间。

2.9K30

View编程指南(三)

应用程序随后被加载,您将重新创建的view并使用保存的tag列表来设置每个view的可见性,从而将的view层次结构返回到之前的状态。...您可以在自定义view中实现layoutSubviews方法,自动执行行为本身不会产生所需的结果方法的实现可以执行以下任何操作: 调整任何直接subview的大小和位置。...打电话,状态栏高度增加,当用户结束通话,状态栏的大小会减小。 在运行时修改view 随着应用程序从用户接收输入,他们调整其用户界面以响应该输入。...作为调整新方向的一部分,可能隐藏一些views,并显示其他views。 view controller管理可编辑的内容,它可能会调整其view层次结构,编辑模式。...更改view的所有权或delegate关系导致绘图问题和应用程序中的潜在崩溃 如果主要使用图层对象而不是view,则可以根据需要将自定义图层对象合并到view层次结构中。

1.7K30

像机器一样绘画和其他AI实验

您有20秒的时间根据显示的文字来绘制图片,与此同时,人工智能正在尝试根据在屏幕上书写的所有线条来猜测您要绘制内容。 ?...用户制作的长颈鹿图纸示例 2.自动绘图 https://www.autodraw.com/ 绘图应用程序的另一个示例是AutoDraw-借助应用程序,可以绘制生活中的最佳插图。...是否曾经计划过为聚会创建传单,但是缺乏绘画技巧总是导致使用预制模板? ? 在这里可以再次看到绘画技能 在此网站上,可以草绘任何内容,然后计算机会尝试帮助您完成任务。...Giorgio Cam尝试识别该对象并创建其发现内容的描述。然后,描述变成了Giorgio Moroder所写音乐的说唱歌词。通过拍摄不同事物的照片以及的手机,可以成为说唱王!...摘要 总的来说,以上所有示例都展示了机器学习的工作原理-它收集了大量输入并从中学习以预测某些事情。更多的人使用它们,这些应用程序将受益最大,并告诉他们对与错。从用户收集的数据越正确,结果将越准确。

59130

PyGame:Python 游戏编程入门-1

稍后也参加活动。在这种情况下,唯一处理的事件是pygame.QUIT,当用户单击窗口关闭按钮发生。 第 20 行用纯色填充窗口。...没有这个调用,窗口中不会出现任何内容! 29号线出口pygame。这仅在循环完成后发生。 这就是pygame“Hello, World”的版本。...您将这些行添加到前面的代码并运行会看到一个带有空白或黑屏的窗口: 在按下该键之前,该窗口不会消失Esc,或者QUIT通过关闭窗口来触发事件。...这将使用自上次翻转以来绘制的所有内容更新整个屏幕。如果没有调用.flip(),则不会显示任何内容。 精灵 在的游戏设计中,玩家从左侧开始,障碍物从右侧进入。...您可以用对象来表示所有障碍物,Surface以使绘制一切变得更容易,但是怎么知道在哪里绘制它们呢?你怎么知道障碍物是否与玩家发生碰撞?障碍物飞出屏幕时会发生什么?

2K40

Unity性能调优手册8UI:Canvas,Layout,RaycastTarget,Mask,TextMeshPro,UI显示

)的调优实践 Canvas分区 在uGUI中,Canvas中的元素发生变化时,运行一个过程(重建)来重建整个Canvas UI网格。...但是,需要仔细考虑如何拆分它们,因为拆分画布将不适用于绘制批次。 Tips 画布嵌套在画布下,拆分画布也有效。如果子画布中包含的元素发生变化,则只会运行子画布的重建,而不会运行父画布。...使用Layout组件,在创建目标对象或编辑某些属性,会发生布局重建。布局重建,像网格重建一样,是一个昂贵的过程。 为了避免由于布局重建而导致的性能下降,尽可能避免使用布局组件是有效的。...启用属性后,其图形将成为单击和触摸的目标。单击或触摸屏幕,启用了属性的对象将成为处理的目标,因此尽可能禁用属性将提高性能 默认情况下启用属性,实际上许多图形并不需要启用属性。...根据uGUI内部实现中的评论,这种现象即使在UI不移动任何东西产生每帧加载,似乎是Unity 2019.3中包含的问题修复的副作用。

40831

Qml开发中的性能Tips(翻译文)

这样,大图像不会占用超过必要的内存; 这对于从外部源加载或由用户提供的内容尤为重要。 请注意,动态更改属性导致重新加载图像源,甚至可能来自网络,如果它不在内存缓存中。...如果确实需要启用Image的smooth属性,请在动画开始禁用平滑处理,并在动画结束重新启用它(仅图像在屏幕上静止,缩放瑕疵才可见)。...如果的第一个视图非常复杂并且需要加载大量QML,请显示一个启动画面,让用户感觉某些事情正在发生(过渡效果)。...该系统可以计算需要重新绘制的项的边界,并在这些边界内绘制所有内容。 4.2 避免复杂的裁剪 应该只在真正需要的时候启用裁剪clip功能。默认clip值为false。...这些文件在启动被重新处理为二进制内存表示,因此到运行时应该不会有性能差异。您可能很幸运,获得了0.5%的改进,然后只在启动(QML解析就是在这里完成的),其他地方都没有。

4.8K32

优化可变刷新率屏幕的 App 体验

我们对比一下,就可以发现可变帧率带来的好处;在120Hz固定帧率的屏幕中,如果App能够在8毫秒内完成帧绘制,这将给用户带来一个顺滑的120Hz体验,假设由于场景复杂度提升,某些帧的绘制时间超过了8毫秒...接下来我们深入API来进一步了解Adaptive-Sync首先需要获取当前环境是否支持可变刷新帧率,对此您可以通过 NSScreen的新属性来判断;在支持可变刷新帧率的环境中,这两个值反应最大和最小帧率所对应的刷新时间间隔...如果的App执行逐帧的自定义绘制,那么需要处理上述帧速率限制事件。...3、 使用targetTimestamp来规划绘图所用时间 下面的例子中, CADisplayLink的实际帧速率发生变化时,targetTimeStamp相较于timestamp属性与实际变化更同步...下面的例子包含了CADisplayLink回调延时与回调跳过两种情况 一般而言针对回调延时,采取舍弃一帧的策略;回调跳过发生,则一般采取舍弃一帧并提前绘制下一帧的策略;现在假设这一帧的绘制工作花了太长时间

2.6K40

OpenGL ES编程指南(一)

与iOS集成 iOS应用程序默认支持多任务处理,但在OpenGL ES应用程序中正确处理功能需要额外考虑。不正确地使用OpenGL ES导致的应用在后台被系统杀死。...通过把上述状态放入上下文中,多个应用程序可以轻松共享图形硬件而不会相互干扰 先初始化 在应用程序可以调用任何OpenGL ES函数之前,它必须初始化一个EAGLContext对象。...当前上下文 iOS应用程序中的每个线程都有一个当前上下文; 调用OpenGL ES函数,其实是上下文的状态发生了改变 要设置线程的当前上下文,请在该线程上执行时调用EAGLContext类方法setCurrentContext...(如果正在使用手动引用计数,则OpenGL ES将保留对象。)调用setCurrentContext:方法更改当前上下文,OpenGL ES不再引用上一个上下文。...在两种特定情况下,Sharegroup是最有用的: 当上下文之间共享的大部分资源不变希望应用程序能够在渲染器的主线程以外的线程上创建新的OpenGL ES对象

1.9K20

Android 9.0 强势来袭,带来了哪些新特性?

例如,网络发出拥塞信号, JobScheduler可能推迟大型网络请求。在未计量的网络上,JobScheduler可以运行预取作业以改善用户体验,例如通过预取标题。...使用工作流程,APP权限向用户显示提示,要求他们同意权限声明。声明允许应用程序重申用户希望完成敏感交易,例如付款。...除Android平台提供的保密外,的应用不能承担任何保密性保证。特别是,请勿使用工作流程来显示通常不会在用户设备上显示的敏感信息。...一个TYPE_WINDOW_STATE_CHANGED 事件发生,使用由返回的类型 getContentChangeTypes() ,以确定如何在窗口发生了变化。...但是,如果我们的应用程序具有任何自定义旋转行为或使用任何不寻常的屏幕方向设置,则可能遇到以前未被注意到的问题,此时用户轮换首选项始终设置为纵向。

3.3K20

Unity性能调优手册3:分析工具,Profile,FrameDebugger,MemoryProfiler,HeapExplorer

操作系统预先预留一定数量的连续内存空间作为池,在需要再分配。池面积不足再次向操作系统端请求扩容。 System Used Memory 应用程序使用的内存总量。...如果存在任何资产泄漏,对象引用的信息可能有助于解决问题。显示仅在启用“收集对象引用”显示。启用功能将增加采样过程中的处理时间,基本上建议保持启用状态。...左框显示了每个项目的单个绘图说明,说明是按照从上到下的顺序发布的。右框显示有关绘图说明的详细信息。你可以看到哪个着色器是用什么属性处理的。 在查看屏幕,请记住以下内容进行分析。...如果您不知道这个假设,请小心,因为您看到内存使用量膨胀,您可能错误地认为存在泄漏 Snapshot Panel 快照面板显示测量数据,并允许选择要查看的数据。...当在Tree Map中选择一个类别,将自动设置筛选器以仅显示该类别中的对象 最后,使用Compare Snapshots,UI会发生变化。

78421

Matplotlib使用(1)

它为利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt或GTK+向应用程序嵌入式绘图提供了面向对象的应用程序接口。...(不必太担心画布,这是至关重要的,因为它实际上是绘制对象来获得绘图的对象,作为用户,几乎看不见它)。一个图形可以包含任意数量的Axes,通常至少包含一个。...(明白了)。绘制图形后,所有艺术家都被绘制到画布上。大多数艺术家都被绑在斧头上。这样的艺术家不能被多个轴共享,也不能从一个轴移动到另一个轴。...对于某些类型的数据,将行分块为合理的大小可以大大减少渲染时间。 以下脚本将首先显示没有任何块大小限制的数据,然后显示块大小为10,000的相同数据。...数字很大,最好看到最大的区别,请尝试最大化GUI并与之交互: import numpy as np import matplotlib.pyplot as plt import matplotlib

2K30

SIGTERM:Linux 容器的优雅终止(退出代码 143)

使用命令发送 SIGKILL:kill -9 [ID] 处理僵尸进程 列出正在运行的进程,您可能会发现在 CMD 列中显示 defunct 的进程。这些是没有正确终止的僵尸进程。...每当 Kubernetes 出于任何原因需要终止 pod ,它都会向 pod 中运行的容器发送 SIGTERM。...虽然最好直接处理 SIGTERM 信号(在下一步中发送),如果由于任何原因无法执行,则可以使用 preStop hook,且无需更改应用程序的代码。...处理 SIGTERM 和 preStop 为确保 pod 终止不会中断应用程序并影响最终用户,应该处理 pod 的终止。...在 Kubernetes 上运行应用程序时,必须确保 ingress controllers 不会出现停机。

10.3K20

UIview

UIView UIView类定义了一个矩形区域在屏幕上和管理内容的接口。 Overview 在运行时,一个视图对象处理任何内容的呈现它的面积,还处理任何内容交互。...The View Drawing Cycle 视图绘制需要的基础上发生。视图是第一次显示,或者全部或部分变得可见由于布局变化,系统询问该视图画它的内容。...这将创建一个静态视图的可视化表示的内容可以显示在屏幕上。视图的实际内容发生变化时,你有责任通知系统视图需要重绘。...因为它将等待下一个绘图周期更新视图中,您可以调用这些方法在多个视图同一间更新他们。...因此,你应该叫UIView类的方法从代码中运行应用程序的主线程。这可能不是严格必需是唯一一次在创建视图对象本身,而是所有其他操作应该发生在主线程。

69110

加速 Vue.js 开发过程的工具和实践

通过这种方式,我们可以确保将与该特定功能相关的任何内容都放入模块中,从而使我们的代码更整洁,导航也不会那么困难。...6.控制更新 Vue.js 反应系统的强大之处在于它可以检测需要更新的事物并更新它们,而无需作为开发人员做任何事情。 例如,每次导航到页面都重新渲染页面。...7.强制更新 大多数情况下, vue 数据对象中的值发生变化时,视图自动重新渲染,并非总是如此。...有些是非常糟糕的做法,例如使用 v-if 在为 true 重新渲染页面,为 false ,组件消失并且不再存在。 这是不好的做法,因为模板永远不会被破坏,而只是隐藏起来,直到可以重新使用为止。... key 发生变化时,它会导致 Vue.js 销毁旧组件并创建一个新组件。

3K91

Google Earth Engine(GEE)——GEE最全介绍(7000字长文)初学者福音!

按下“获取链接”按钮,浏览器地址栏中将出现一个唯一链接。链接表示按下按钮编辑器中的代码。...将数据集导入脚本的结果组织在脚本顶部的导入部分中,在导入某些内容之前隐藏。创建一些导入后,应该会看到类似于图 5 的内容。...检查器选项卡 任务管理器旁边的检查器选项卡可让以交互方式查询地图。检查器选项卡被激活,光标变成一个十字准线,单击地图,它将显示光标下的位置和图层值。...控制台选项卡 print()从脚本中获取某些内容,例如文本、对象或图表,结果将显示在Console 中。控制台是交互式的,因此您可以展开打印对象以获取有关它们的更多详细信息。...它显示发生错误时任何单个计算节点上正在使用的内存量。 峰值内存 任何单个计算节点上用于该操作的最大内存。 几何工具 您还可以通过在屏幕上绘制几何图形将几何图形导入脚本。

1.2K10
领券