首页
学习
活动
专区
圈层
工具
发布

iOS视图编程指南(View Programming Guide for iOS)(译)

概览 每一个应用都至少有一个窗口和视图用以呈现内容,UIKit和其他的系统框架会提供一些预定义的视图用来呈现内容,这些视图从简单的按钮、文本标签到更加复杂的列表视图、选择器视图和滚动视图。...在视图层次中,父视图负责动态定位和规范子视图,这种动态改变子视图的能力可以使视图更好适应不断变化的状态,比如交互旋转和动画。你可以将试图视为搭积木。...用这些组合来构建属于你的人机交互,而不是只用一个视图显示所有的内容,你通常需要几个视图来构建视图层次。视图层次中的每个视图都是你所构建用户交互中特定的一部分,并通常为特殊类型内容所优化的(各司其职)。...窗口用视图(视图控制器)管理与可视化视图层次的交互和改变。大多数,应用的窗口从不发生改变,窗口一旦创建便保持不变,只有在窗口上的视图发生变化。每个应用至少有一个窗口用以呈现设备主屏幕上的用户交互。...因为在iOS机制中支持Interface Builder和nib文件混合使用的,并且很容易就可以将nib文件融合到应用程序的设计中。

1K40

翻译_iOS视图编程指南(View Programming Guide for iOS)之介绍

概览#### 每一个应用都至少有一个窗口和视图用以呈现内容,UIKit和其他的系统框架会提供一些预定义的视图用来呈现内容,这些视图从简单的按钮、文本标签到更加复杂的列表视图、选择器视图和滚动视图。...在视图层次中,父视图负责动态定位和规范子视图,这种动态改变子视图的能力可以使视图更好适应不断变化的状态,比如交互旋转和动画。你可以将试图视为搭积木。...用这些组合来构建属于你的人机交互,而不是只用一个视图显示所有的内容,你通常需要几个视图来构建视图层次。视图层次中的每个视图都是你所构建用户交互中特定的一部分,并通常为特殊类型内容所优化的(各司其职)。...窗口用视图(视图控制器)管理与可视化视图层次的交互和改变。大多数,应用的窗口从不发生改变,窗口一旦创建便保持不变,只有在窗口上的视图发生变化。每个应用至少有一个窗口用以呈现设备主屏幕上的用户交互。...因为在iOS机制中支持Interface Builder和nib文件混合使用的,并且很容易就可以将nib文件融合到应用程序的设计中。

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

    音视频混流基本原理

    前言 在直播场景里,我们经常需要将多个视频画面混合成一个视频画面(或是多路音频合成一路声音),常见的场景如: 本地既要接入摄像头,又要展示桌面或者视频文件,在本地需要做一下画面混合 主播连麦PK时,将多个主播的画面混合成一个...,普通观众就不需要拉多路流 在直播过程中通过麦克风采集人声,然后配上背景音乐,比如秀场的唱歌 这些场景里都会涉及到一个相同的部分,就是音视频的混流,其大致的过程如下图。...[音视频混流的基本过程] 视频混流的基本原理 视频混流的过程,是指定一块画面区域,在此区域内,按画面的位置布局,将区域中的每个视频画面的像素混合计算成一个像素。这里面主要涉及到的是图层与颜色计算。...图层 图层是视频混流的一个概念,通常分为背景图层和叠加图层,图层可以有效把控画面布局。...叠加图层是在背景图层上进行叠加的画面,每一个叠加图层都会在背景图层之上对应一块位置区域。混流区域内的像素颜色值,是根据其位置上所有图层(包括背景图层和叠加图层)对应的颜色值,按规则计算出来。

    9.5K145

    Texture

    Texture原名是AsyncDisplayKit,是Facebook的paper团队发布的一个基于UIKit的库,这个库能够将图片加载、布局计算以及UI渲染等操作均放在后台线程,进而可以极大地优化APP...渲染:对于大量文本、图片等的渲染,UIKit组件只能在主线程进行,可能会造成GPU绘制的资源紧张;而ASDK会在后台异步绘制图层,不会阻塞主线程的运行。 实际上,ASDK的最大特点就是异步。...Texture几乎封装了UIKit中的所有常用控件,二者的对应关系如下: Nodes ? Node Containers ? 子父类关系 ?...需要注意的是,ASDisplayNode也拥有一个view属性,所以ASDisplayNode及其子类都可以通过这个view来添加UIKit控件,所以Texture可以和UIKit混用。...- (void)viewDidLoad { //在UIKit中添加ASDisplayNode ASDisplayNode *displayNode = [[ASDisplayNode alloc]

    2.7K61

    用这些 iOS 技巧让你的 APP 性能更佳

    如果你的应用程序在完成启动后包含着与启动页看起来不同的元素,那么用户则可能会在启动页到应用程序的第一个页面的过程中感到令人不快的闪屏。」 「启动页并不是一个做品牌推广的机会。...假设 MyViewController 嵌入在 navigation 控制器中,navigation 控制器嵌入在另一个 tabbar 控制器中。...如果视图具有透明度(即 alpha 低于 1.0),那么 iOS 将需要做些额外的工作来混合视图层次结构中不同的视图层以计算出哪些内容需要展示。...另一方面,如果视图设置为不透明,则绘图系统仅会将此视图放在前面,并避免在其后面混合多个视图层的额外工作。...主线程中通常在 UIKit 任务(如处理用户输入)和一些间隔很小的轻量级任务之间交替。如果在主线程上运行繁重的任务,那么 UIKit 需要等到繁重的任务完成以后才能处理用户交互。 ?

    4.3K30

    CALayer 图层概念二、CALayer属性二、方法

    UIView负责监听和相应事件.UIView是更高层的封装 在 iOS 中,你能看得见,摸得着的东西基本上都是UIView.比如一个按钮,一个文本标签,一个文本输入框, 一个图标等.这些都是UIView...,其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时, UIView内部会自动创建一个图层 (即CALayer对象), 通过UIView的layer属性即可访问这个图层...UIColor, UIImage是定义在UIKit框架中的....ctx = UIGraphicsGetCurrentContext(); [redView.layer renderInContext:ctx]; 4、添加动画、开始动画 一个layer中可以添加多个核心动画对象...: 展示图层, 在后台移动图层中的内容 - (id)presentationLayer; 模型图层, 就是移动前原本的图层位置,移动后presentationLayer会回到该图层位置 - (id)modelLayer

    1.8K70

    技术解码 | Web端AR美颜特效性能优化

    这种方案可以完美地对齐photoshop中的混合模式效果,同时也需要单独渲染用户制作时导入的每一个图层,每个图层对应一个Mesh+shader,造成了性能的消耗。...实际上仔细观察发现,美妆的多个图层渲染的Mesh中,其顶点位置都是完全相同的,只是输入的Material,即着色在Mesh上的纹理,以及混合模式有差异。...那么其顶点数据首先是可以复用同一份的,然后相同混合模式的不同图层纹理,完全可以通过Material的Shader整合到一个Mesh当中,以达到实际渲染图层的减少。...将混合模式相同的数据整合到一起后,可以动态生成对应的着色器代码: const layers = [...]const shader = `precision mediump...以上就是在实现视立方·Web美颜特效产品中遇到的一些性能优化的点以及方案,有感兴趣的同学可以直接扫码体验(Web端体验地址:https://demo.webar.qcloud.com/)或点击文末「阅读原文

    2.3K20

    《突破启动瓶颈:Swift构建iOS应用时界面加载的深度优化策略》

    iOS应用的启动过程如同精密仪器的运转,每一个环节都有其内在的时序与依赖关系。...首次渲染前的界面准备阶段,UIKit框架需要完成视图层级的构建与布局计算。...视图层级的精简需要超越视觉结构的表象。传统的UIKit开发中, UIView 的层级深度每增加一层, layoutSubviews 的递归调用成本就会指数级增长。...Swift中可通过自定义 UIView 的 draw(_ rect: CGRect) 方法,将多个子视图的绘制逻辑合并为一次图形上下文操作,减少图层合成(compositing)的次数。...其约束求解器本质上是一个线性规划系统,当视图包含超过20个约束时,求解时间会显著增加。

    13610

    RenderingNG中关键数据结构及其角色

    「原子步骤」 绘画块的有序列表,即显示项目组和属性树状态,作为渲染管道「图层化」Layerize步骤的输入数据 合成器帧是RenderingNG表示如何将栅格化的内容「拼接在一起」,并使用GPU有效地绘制它的数据格式...为了将多个「本地帧树」合成一个「合成器帧」, Viz会同时从三个本地帧的「根节点」请求对应的合成器帧,随后将其聚合到一起。...❝合成器帧是RenderingNG表示如何将栅格化的内容「拼接」在一起,并使用GPU有效地绘制它的数据格式 ❞ 瓦片Tile 理论上,渲染进程或浏览器进程中的合成器compositor可以「将像素栅格化为渲染器视口的单一纹理...然而,如果该合成器想要「更新哪怕是一个像素」,它就需要对「整个视口」进行重新光栅化处理,并向Viz提交一个新的纹理。 相反,「视口被划分为瓦片Tile」。...每个通道必须在GPU上「按顺序执行」,分为多个 "阶段",而单个阶段可以在「单个大规模并行的GPU计算」中完成。 合成Aggregation ❝多个合成器帧被提交给Viz,它们需要被一起绘制到屏幕上。

    2.5K10

    ae软件怎么下载?Adobe ae软件中文版2021 winmac下载安装

    多层次管理:AE 软件支持多个图层、合成、控制层等管理方式,可方便地对多个元素进行组合和控制。 动画制作:AE 软件提供了多种关键帧编辑、路径调整、动力学模拟等工具,可以轻松地制作各种动画效果。...视频合成:AE 软件支持视频合成、分层合成等多种方式,可以方便地将多个元素组合到一起,形成新的画面效果。...导入素材:将需要的素材导入到项目面板中,包括视频、音频、图片等。 制作动画:选择图层,使用关键帧编辑工具制作相应的动画效果,并对控制层进行组织和管理。...添加效果:在图层上添加相应的特效和滤镜,比如模糊、变形、颜色调整等,以达到期望的视觉效果。 合成图层:通过多层次的合成方式将不同的图层组合到一起,形成新的画面效果。...合成图层:通过多层次的合成方式将不同的图层组合到一起,形成新的画面效果。 导出视频:完成制作后,将视频输出为 MP4 格式,以便于在不同平台上进行播放。

    70740

    View编程指南

    您不是使用一个view呈现所有内容,而是经常使用多个view来构建view层次结构。层次结构中的每个view呈现用户界面的特定部分,通常针对特定类型的内容进行优化。...由于对Interface Builder和nib文件的支持已经整合到iOS中,所以将nib文件合并到您的应用程序的设计中需要一点努力。...要理解View和图层之间的关系,有助于看一个例子。下图显示了ViewTransitions示例应用程序的view hierarchy以及与底层Core Animation layer的关系。...每个View都有一个对应的layer对象,可以通过该view的layer属性访问。 (因为bar按钮项不是View,所以不能直接访问它的图层。)...viewcontroller的工作是管理一个View层次结构,通常由多个view组成,用于实现一些独立的功能。

    2.9K20

    浏览器渲染流程(下)

    图片 每一个黑框都是一个图层。 那么需要满足什么条件,渲染引擎才会为特定的节点创建新的图层呢?...而绘制的过程就是模仿画画,会把涂层的绘制拆分成很多个绘画指令。我们想要绘制只需要依次执行一个绘制列表的每一条指令即可,比如,画一个矩形,画一个边框等。 那么怎么查看绘制的指令呢?...然后合成线程开始工作: 合成线程将图层划分为图块(tile) 图块栅格化 **合成线程将图层划分为图块(tile)**: 通常一个页面会很大(长),但是用户只能看到其中一部分,而这一部分叫做视口...有一些图层也会很大,但是用户只能通过视口看到一部分,所以就没必要将整个图层都绘制出来。这就是将图层划分成图块的原因。 图片 图块栅格化:将图块转换为位图。...(会优先将视口附近的图块先转换为位图) 渲染进程维护了一个栅格化的线程池,所有的图块栅格化都是在线程池内执行的。

    1.5K30

    IOS 与ANDROID框架及应用开发模式对照一

    在IOS中, 由Cocoa Touch提供的框架之中的一个UIKit来提供和管理应用程序的行为,包含应用程序的启动直到退出,UIKit 框架管理着应用程序的很多核心行为。...在ios 的UIKit 框架中的UIViewController 类是全部视图控制器对象的基础类, 每一个视图控制器对象是 UIViewController 类的实例。...IOS框架的窗体相应一个 UIWindow 对象,UIWindow 对象协调一个或多个视图在屏幕上的呈现。 大多数应用程序仅仅有一个窗体。...UIKit 框架提供的视图组织为视图层次。应用程序所显示的视图,会排列成层次结构(直观上基于包括)。此模式同意应用程序将单个视图和合成视图同等对待。...层次的根部为一个窗体对象;根部下面的每一个视图,都有一个父视图,以及零个或多个子视图。 父视图包括子视图。 视图层次是画图和事件处理的结构性组件。

    1.4K20

    iOS图形处理概论:OpenGL ES,Metal,Core Graphics,Core Image,GPUImage,Scene Kit (3D) ,Sprite Kit (2D),OpenCV

    UIKit与Core Graphics的关系 在UIKit中,UIView类本身在绘制时自动创建一个图形环境,即Core Graphics层的CGContext类型,作为当前的图形绘制环境。...图形环境Context是个比较抽象的东西,它不仅仅是一个可以绘制的图层,还包含为当前图层设置的参数,如阴影,线条粗细,绘制模式等。可以类比成一个新建的Photoshop图层以及当前笔触,颜色等配置。...简单说,就是为图片开辟一块内存,然后在里面画东西,上下文帮你把图片内存抽象成一个Context(图层)了。 PDF上下文(A PDF graphics context):用于生成pdf文件。...OpenGL ES规范本身不定义绘制表面和绘制窗口,因此ios为了使用它必须提供和创建一个OpenGL ES 的呈现环境,创建和配置存储绘制命令结果的framebuffer 及创建和配置一个或多个呈现目标...每一个IOS应用的每一个线程都有一个当前context,在调用OpenGL ES函数时,使用或改变此context中的状态。

    4K41

    IOS开发之视图和视图控制器

    在学习视图这一块的东西的时候,感觉和Java Swing中的Panel差不多。在UIKit框架中都有一个UIWindow来容纳我们的View。...都是放在Window中,一般每个应用都只有一个Window,当然有的游戏会有多个应用窗口。...我们还可以把视图看做是一个视图容器,视图上面还可以添加一个子视图。往父视图中添加的SubView会被放在一个数组中。...视图层大致分为下面的几类         1.容器视图                 容器视图用于增强其他视图的功能,或者为视图内容提供额外的视觉分隔,比如UIScorllView类用于显示因内容太大而无法显示在一个屏幕上的视图...文件的内容如下: 1 2 3 #import UIKit/UIKit.h> @interface MainViewController : UIViewController @end

    2.3K70

    Sketch55发布,这几个好用新功能你了解吗?

    不过后来在不经意之间,看到了图层之间的手柄。 ? 这个智能分布功能其实用法很简单,当我们选中一行或者一列的需要平均分布的图层对象,就会出现下面的界面。...同时,选中多个图层后,系统会自动判断我们需要横向均匀分布还是纵向均匀分布,从而打开Spacing选项左侧或者右侧的输入框,我们可以通过输入具体数值来进行平均分布的操作。 ?...现在你只需要粘贴这个代码到Sketch中,就可以创建SVG图层,看起来挺有趣的。比如下边的这个点赞图标: ? 打开后就是这样的代码: ? 接下来我们把代码直接复制到Sketch中,看看效果: ?...还是很好玩的,这个也很适合开发去调整SVG中的代码后,直接输出到Sketch。...▼ 往期精彩回顾 ▼ 有了这个Sketch插件,海量UIKit素材即点即来~ 静电杂谈:如何做一个“有特色”的UI设计师 交互工具哪个好用?

    1.2K40

    iOS学习——UIView的研究

    在iOS开发中,我们知道有一个共同的基类——NSObject,但是对于界面视图而言,UIView是非常重要的一个类,UIView是很多视图控件的基类,因此,对于UIView的学习闲的非常有必要。..._0); 392 #endif 393 394 @end 395 396 @interface UIView(UIViewAnimationWithBlocks) 397 398 /** 用于对一个或多个视图的改变的持续时间...animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); 400 401 /** 用于对一个或多个视图的改变的持续时间...animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); 403 404 /** 用于对一个或多个视图的改变的持续时间内动画完成时的操作...NS_AVAILABLE_IOS(4_0); // toView added to fromView.superview, fromView removed from its superview 415 416 /** 在一个或多个视图上执行指定的系统提供的动画

    3.2K80

    Chrome 页面呈现原理与性能优化之企业级分享总结(内附完整ppt)

    限制因设备的内存和CPU功率⽽异,但当Chrome达到限制时,它会在⼀个进程中开始从同⼀站点运⾏多个选项卡。 有更高的资源占用。...这样可以做到,当 Chrome 在强大的硬件上运行时,它可能会将每个服务拆分为不同的进程,从而提供更高的稳定性,但如果它位于资源约束的设备上,Chrome 会将服务整合到一个进程中,从而整合流程以减少内存使用...通常一个页面可能很大,但是用户只能看到其中的一部分,我们把用户可以看到的这个部分叫做视口(viewport)。...在有些情况下,有的图层可以很大,比如有的页面你使用滚动条要滚动好久才能滚动到底部,但是通过视口,用户只能看到页面的很小一部分,所以在这种情况下,要绘制出所有图层内容的话,就会产生太大的开销,而且也没有必要...一个线程中,事件循环是唯一的,但是任务队列可以拥有多个。任务队列又分为macro-task(宏任务)与micro-task(微任务),在最新标准中,它们被分别称为task与jobs。

    1.8K20

    Edius软件怎么下载?影视制作Edius软件中文版 winmac下载安装

    多层次管理:Edius 软件支持多个图层、合成、控制层等管理方式,可方便地对多个元素进行组合和控制。...导入素材:将需要的素材导入到项目面板中,包括视频、音频、图片等。 制作动画:选择图层,使用关键帧编辑工具制作相应的动画效果,并对控制层进行组织和管理。...合成图层:通过多层次的合成方式将不同的图层组合到一起,形成新的画面效果。 输出视频:完成编辑后,将视频输出为所需格式,如 MP4、AVI、MOV 等。...导入素材:将需要的素材文件导入到项目面板中,包括背景、人物等元素。 制作动画:选择人物图层,使用关键帧编辑工具制作相应的动画效果,比如人物的移动和转变姿势。...合成图层:通过多层次的合成方式将不同的图层组合到一起,形成新的画面效果。 导出视频:完成制作后,将视频输出为 MP4 格式,以便于在不同平台上进行播放。

    90620

    浏览器原理学习笔记01—宏观视角下的浏览器

    早在2007年之前,市面上浏览器都是单进程的,即浏览器所有的功能模块运行在同一个进程中,因此不稳定、不流畅、不安全。...同时在性能受限的设备上 Chrome 还提供灵活的弹性架构,会将很多服务整合到一个进程中,从而节省内存占用。 [yyenpglx0v.png] 3....[4rsich47l0.png] 布局树的节点默认从属于父节点图层,满足下面两点中一点的元素可被提升为单独的一个图层: 1....[0o17qh92oz.png] 6.5 Paint: 图层绘制,生成绘制列表 渲染引擎会对图层树中的每个图层进行绘制,首先会生成绘制列表,可以在开发者工具的 Layers 标签中选择 document...有的图层很大很长,但用户通过 视口(viewport)只能看到页面的很小一部分,为了减小开销,合成线程会将图层划分为 图块(tile),通常大小为 256x256 或 512x512,合成线程会优先把视口附近的图块栅格化转换成位图

    1.5K198
    领券