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

翻译_iOS视图编程指南(View Programming Guide for iOS)之视图和窗口体系

理解这些设施是如何工作的对于确保应用发生变化时视图可以正常工作是非常重要的。...视图层次和视图的管理#### 一个视图呈现自身内容之外,还可以作为其他视图的容器。当一个视图包含另一个视图,两个视图间的父子关系就创建出来了。关系中,孩子视图就是视图,父亲视图就是超视图。...表面上,视图掩盖全部或部分视图的内容。如果子视图是完全不透明的,有视图组成的区域将会完全掩盖视图相应地区域。如果子视图部分透明,屏幕显示之前,视图视图的内容就会混合在一起。...改变视图大小会产生波浪作用,导致视图的位置和尺寸也随之变化。当视图的尺寸发生变化时,使用视图的调整功能以恰当的配置视图。...另一些影响视图的变化有:隐藏视图、改变视图的透明度、将数学变化应用到视图的坐标系统中。 视图层次中管理视图决定着你的应用是如何响应事件的。

98940

浅谈移动端 View 的显示过程 顶

specMode 有三种类型: 1.UNSPECIFIED 视图对子视图没有任何限制,可以将视图按照开发者的意愿设置成任意的大小一般开发过程中不会用到。...2.EXACTLY 视图视图指定一个确切的尺寸,该尺寸由 specSize 的值来决定。 3.AT_MOST 视图视图指定一个最大的尺寸,该尺寸的最大值是 specSize。... onMeasure() 方法中: ? 调用 getDefaultSize() 方法来获取视图大小: ?...); 该过程的主要作用即根据视图大小以及布局参数,将相应的 View 放到合适的位置上。...进入该方法后,我们可以发现里面是空的,这是因为视图的具体位置是相对于视图而言的,所以 View 的 onLayout 为空实现。 ?

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

TypeError: Cannot read properties of null (reading ‘level‘)

Vue中,key是用来追踪每个节点的身份,当key改变,Vue会认为这是一个新的节点,因此会重新渲染这个组件。 首先,我们需要理解Vue的渲染机制。...Vue中,组件的渲染是基于它们的数据和属性进行的。当这些数据或属性发生变化时,Vue会自动检测到这些变化,并重新渲染相关的组件,以确保视图与数据保持同步。 key属性Vue中具有特殊的意义。...为了确保视图的一致性和准确性,Vue会选择重新渲染这个组件。 对于el-cascader组件来说,它是一个级联选择器,通常用于选择有层次结构的数据。...当你改变它的key值,Vue会认为这是一个新的el-cascader组件,因此会触发重新渲染,以确保视图与最新的数据和状态相匹配。...总结起来,改变el-cascader的key值会触发重新渲染,是因为Vue通过key来识别组件的身份,当key发生变化时,意味着组件的状态或数据可能发生了变动,为了保持视图与数据的同步,Vue会选择重新渲染这个组件

18010

前端面试之Vue

你可以把一些视图逻辑放在一个Model里面,很多View重用这段视图逻辑。 3.独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。...-->组件beforeUpdate -->组件beforeDestroy–> 组件destroyed --> 组件updated 加载渲染过程 beforeCreate->created-...2、组件可以使用 $emit,组件监听到自定义事件 。...它能够不活动的组件实例保存在内存中,而不是直接将其销毁,它是一个抽象组件,不会被渲染到真实DOM中,也不会出现在组件链中。 作用:实现组件缓存,保持这些组件的状态,以避免反复渲染导致的性能问题。...它将满足条件(pruneCache与pruneCache)的组件cache对象中缓存起来,需要重新渲染的时候再将vnode节点从cache对象中取出并渲染

3.6K30

GeometryReader :好东西还是坏东西?

确切来说,GeometryReader 的作用主要是获取视图大小、frame 等几何信息。...或许有些读者不太了解其含义,ideal size 是指当视图给出的建议尺寸为 nil (未指定模式),视图返回的需求尺寸。...视图视图提供建议尺寸,视图返回需求尺寸。视图是否根据视图的需求尺寸来放置视图,以及视图是否根据视图给出的建议尺寸来返回需求尺寸,完全取决于视图视图的预设规则。...VStack 会结合视图的优先级,它的视图给其的建议尺寸,摆放对子视图提出最终的建议尺寸。...一些复杂的布局场景中,或者某些设备或系统版本中,布局可能需要经过几轮的协商才能获得最终稳定的结果,尤其是当视图需要依赖 GeometryReader 提供的几何信息来重新确定自己的位置和尺寸

48270

大前端开发中的“树” (下)

表示左上角所在的 CGPoint(x, y) bounds 是指在自身视图中的 CGRect(x=0, y=0, width, height) frame 是视图的 CGRect(x, y, width...它的作用是,CALayer 在做隐式动画,CoreAnimation 就需要在设置一次新值和新值生效之间,对屏幕上的图层进行重新组织。...典型场景包括同步动画和处理用户交互: 如果是实现一个基于定时器的动画,而不仅仅是基于事务的动画,这个时候需要准确知道某一刻图层显示什么位置,以便正确摆放图层; 如果想做动画的图层响应用户输入,...当下次 vsync 信号到来时,Owner 会遍历 dirty 列表中的元素,它们都重新执行一次对应的步骤。...以动画系统为例,iOS 的视图系统把动画配置作为视图树描述的一部分,直到渲染才计算实际值,从而提升动画性能;而 Android 渲染过程一般依靠视图树的变化实现动画,相比之下增加了处理环节。

1.9K30

浅谈移动端 View 的显示过程

为了使 CPU、GPU 生成帧的速度与 Display 保持一致,Android 系统每 16ms 就会发出一次 VSYNC 信号,触发 UI 渲染更新。...specMode 有三种类型: 1.UNSPECIFIED 视图对子视图没有任何限制,可以将视图按照开发者的意愿设置成任意的大小一般开发过程中不会用到。...2.EXACTLY 视图视图指定一个确切的尺寸,该尺寸由 specSize 的值来决定。 3.AT_MOST 视图视图指定一个最大的尺寸,该尺寸的最大值是 specSize。...); 该过程的主要作用即根据视图大小以及布局参数,将相应的 View 放到合适的位置上。...进入该方法后,我们可以发现里面是空的,这是因为视图的具体位置是相对于视图而言的,所以 View 的 onLayout 为空实现。

61920

iOS开发-视图渲染与性能优化

GroupOpacity=YES, layer 视觉上的透明度的上限是其父 layer 的opacity。当视图的layer.opacity != 1.0,会开启离屏渲染。...layer.opacity == 1.0视图不用管子视图,只需显示当前视图即可。...为了视图视图保持同样的透明度,从 iOS 7 以后默认全局开启了这个功能。 性能优化 这个是WWDC推荐的检查项目: ? 1、帧率一般多少?...重写了drawRect会导致CPU渲染CPU进行渲染,GPU大多数情况是处于等待状态; 4、是否存在过多离屏渲染?...越少越好;离屏渲染会导致上下文切换,GPU产生idle; 5、是否渲染过多视图视图越少越好;透明度为1的视图更受欢迎; 6、使用奇怪的图片格式和大小

1.7K70

VUE

作用域插槽:默认插槽、具名插槽的一个变体,可以是匿名插槽,也可以是具名插槽,该插槽的不同点是组件渲染作用域插槽,可以将组件内部的数据传递给组件,组件根据组件的传递过来的数据决定如何渲染该插槽...对于React 而言,每当应用的状态被改变,全部组件都会重新渲染。...组件 beforeDestroy组件 destroyed组件 destoryedcreated 和mounted 的区别created:模板渲染成 html 前调用,即通常初始化某些属性值,然后再渲染视图...模板作用域插槽,2.x 的机制导致作用域插槽变了,组件会重新渲染,而 3.0 把作用域插槽改成了函数的方式,这样只会影响组件的重新渲染,提升了渲染的性能。...diff算法的原理新老虚拟DOM 对比:首先,对比节点本身,判断是否为同一节点,如果不为相同节点,则删除该节点重新创建节点进行替换如果为相同节点,进行patchVnode,判断如何对该节点的节点进行处理

23810

SwiftUI 布局 —— 尺寸( 上 )

这类视图本身并不会参与布局,SwiftUI 的布局系统会在布局自动将它们忽略,视图与具备布局能力的祖先视图直接联系起来。...顾名思义,建议尺寸是视图视图提供的建议,视图计算其需求尺寸是否考虑建议尺寸完全取决于它自己的行为设定。...当视图想获得视图最大模式下的需求尺寸,会为其提供该模式的建议尺寸 明确尺寸模式 非 0 或 infinity 的数值。...渲染尺寸是视图视图设置的用于渲染的建议尺寸。...视图尺寸 视图渲染屏幕上呈现的尺寸,也是热门提问 —— 如何获取视图的尺寸中所指的尺寸。 视图中可以通过 GeometryReader 获取特定视图的尺寸及位置。

4.7K20

Flutter原理:三棵重要的树(渲染过程、布局约束、应用视图的构建等)

Flutter 的渲染过程由用户的输入开始,当接受到用户输入的信号,就会触发动画的进度更新,例如我们第一次渲染的启动动画,或者我们滚动手机屏幕单个列表项复用时的移动动画。...这里,Flutter 中的布局过程可用下图表示,在上述构建完成渲染树后,渲染对象会将布局约束信息向下传递,渲染对象根据自己的渲染情况返回 Size,Size 数据会向上传递,最终渲染对象完成布局过程...当节点接受到该约束,便可以取得上图中绿色范围内的值,即宽度 150 到 300 之间,高度大于 100,当取得具体的值之后再将取得具体的大小的值上传给节点,从而达到父子的布局通信。...,这对布局优化比较有用;因为如果 child 改变了自己的大小,parent 就不必重新 layout 了。...但是我们的例子中,我们的需要把 child 放置 parent 的中心,就是 child 的大小(Size)一旦改变,则其对应的偏移量(Offset) 也会改变,于是 parent 需要重新布局,所以我们这里传递了一个

1.5K40

unity3d新手入门必备教程

旋转(Orbit)和缩放(Zoom Modes) 模式也是昀常用的视图工具。 保持视图工具选中并按住Option键即可进入旋转模式。单击并拖动鼠标,可以看到视图如何旋转的。...物体层次 Unity使用一个称为化(Parenting)的概念。任何物体都可以成为另一个物体的。一个物体可以从它的物体继承移动和旋转。...你将会看到一个三角显示新的物体的左边,现在你可以展开或折叠以便在层次中查看他的物体,而不会影响你的游戏。    ...当一物体是另外一些物体的(Parent)物体,这个物体的旋转将影响所有的(Child)物体。你可以层次视图 (Hierarchy View)中通过拖动任何物体到另一个物体上来创建一个。...一个游戏物体可以有任意多个子物体,但是只能有一个物体。物体也可以是其它物体的物体。你可以很容易的层次视图中分辨一个物体是不是一个物体。

6.3K10

美团前端二面常考react面试题及答案_2023-03-01

而不必将所有的请求都放在组件中。于是该请求只会在该组件渲染才会发出,从而减轻请求负担。...componentWillReceiveProps初始化render的时候不会执行,它会在Component接受到新的状态(Props)被触发,一般用于组件状态更新组件的重新渲染。...(data) } 可以通过事件方法传值,和传子有点类似。...差异计算算法中,React 能够相对精确地知道哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染。 如果在短时间内频繁setState。...Portals 提供了一种很好的将节点渲染组件以外的 DOM 节点的方式。 第一个参数(child)是任何可渲染的 React 元素,例如一个元素,字符串或碎片。

2.6K30

SwiftUI 中布局的工作原理

步骤如下: 视图提供一个大小并询问其视图大小视图根据自己的信息,它会选择自己的尺寸,而视图必须尊重这个选择。 然后父视图在其坐标空间中定位子视图。...幕后,SwiftUI 执行第四步:尽管它将位置和大小存储为浮点数,但在渲染,SwiftUI 会将所有像素舍入到最接近的值,这样我们的图形仍然清晰。...这三条规则看起来很简单,但它们允许我们创建非常复杂的布局,每个视图都可以决定如何以及何时调整大小,而无需级参与。...“(视图询问大小) ContentView:“我不在乎;我是布局中立的。我问我的孩子:嘿,背景,你可以使用整个屏幕——你需要多少?“(视图询问大小) 背景:“我也不在乎;我的布局也是中性的。...我问我的孩子:嘿,Text,你可以把整个屏幕留给你自己——你需要多少?“(视图询问大小) Text:“嗯,我的文本是默认字体的‘Hello,World’,所以我需要X像素宽Y像素高。

3.7K20

【愚公系列】2023年03月 其他-Web前端基础面试题(VUE专项_58道)

=>进行数据接收) 传递组件中注册子组件并在组件标签上绑定自定义事件的监听。...、如何优化SPA应用的首屏加载速度慢的问题 1.将公用的JS库通过script标签外部引入,减小 app.bundel 的大小浏览器并行下载资源文件,提高下载速度; 2.配置 路由,页面和组件使用懒加载的方式引入... 2.0 里,渲染效率的快慢与组件大小成正相关:组件越大,渲染 效率越慢。并且,对于一些静态节点,又无数据更新,这些遍历都是性能浪费。...所以, 3.0 里,渲染效率不再与模板大小 成正相关,而是与模板中动态节点的数量成正相关 b. slot 编译优化 Vue.js 2.x 中,如果有一个组件传入了 slot,那么每次组件更新的时候,...40、Vue的父子组件生命周期钩子函数执行顺序 加载渲染过程 beforeCreate -> created -> beforeMount -> beforeCreate -> created

7.2K20

Flutter技术与实战(4)

对应到 Flutter 中,意图是绑定了组件状态的 State,结果则是重新渲染后的组件。 Widget 的生命周期内,应用到 State 中的任何更改都将强制 Widget 重新构建。...StateLessWidget Flutter 中,Widget 采用由、自顶向下的方式进行构建, Widget 控制着 Widget 的显示样式,其样式配置由 Widget 构建提供...值得注意的是,页面切换,由于 State 对象视图树中的位置发生了变化,需要先暂时移除后再重新添加,重新触发组件构建,因此这个函数也会被调用。...像这样的手势识别发生在多个存在父子关系的视图,手势竞技场会一并检查视图视图的手势,并且通常最终会确认由视图来响应事件。...在此之前,我们还需要自定义一个手势识别器,这个识别器竞技场被 PK 失败,能够再把自己重新添加回来,以便接下来还能继续去响应用户事件。

10.7K20

大前端开发中的“树” (上)

如图,进行 Component Diff , 发现组件 D 和 G 是不同类型的组件,会直接删除组件 D 及其节点,然后重新创建组件 G 及其节点。...Component Diff 举例 假如将 D 的节点重新排序,如 E、F 的顺序换成了 F、E,这个该怎么对比?...通过 Android Studio 查看视图树 Android 的视图布局和渲染过程通过 Measure、Layout、Draw 三个步骤完成,视图的位置和大小通过 Measure 和 Layout 过程确定...以主题形式应用在视图的公共视图属性,会同时作为优先级较低的属性应用在视图中:如果子视图自己没设置这个属性,就使用主题设置的属性。...创建每个子视图,会同时考虑其所属上下文的主题信息,这里体现上一节中主题的全局生效、作为较低优先级属性的作用。

96240

Flutter

下一个节点在Widget树中是Container Widget,它的类型和原来是一样的,但是它的颜色变化了,所以RenderObject的配置也会发生对应的变化,然后它会重新渲染,其他的对象都保持不变。...布局过程中,渲染对象树中的每个渲染对象都会接收对象的布局约束参数,决定自己的大小,然后父对象按照控件逻辑决定各个子对象的位置,完成布局过程。...五、Flutter的基础 StatelessWidget Widget 采用由、自顶向下的方式进行构建, Widget 控制着 Widget 的显示样式,其样式配置由 Widget 构建提供...值得注意的是,页面切换,由于 State 对象视图树中的位置发生了变化,需要先暂时移除后再重新添加,重新触发组件构建,因此这个函数也会被调用。...因为如果这个参数为 null,ListView 会动态地根据 Widget 创建完成的结果,决定自身的视图高度,以及 Widget ListView 中的相对位置。

1.9K40

10分钟了解Flutter跨平台运行原理!

那么Flutter是如何编译成原生app的呢? Flutter不借助原生的渲染能力,而是自己实现了一套与Android和iOS一样的渲染原理,从而在性能上与原生平台保持基本一致。...可以看到,Flutter关注如何尽可能快地两个硬件时钟的VSync信号之间计算并合成视图数据,然后通过Skia交给GPU渲染:UI线程使用Dart来构建视图结构数据,这些数据会在GPU线程进行图层合成...布局过程中,渲染对象树中的每个渲染对象都会接收对象的布局约束参数,决定自己的大小,然后父对象按照控件逻辑决定各个子对象的位置,完成布局过程。...为了防止因子节点发生变化而导致整个控件树重新布局,Flutter加入了一个机制——布局边界(Relayout Boundary),可以某些节点自动或手动地设置布局边界,当边界内的任何对象发生重新布局...ScrollView滚动的时候需要刷新视图内容,从而触发内容重绘。而当滚动内容重绘,一般情况下其他内容是不需要重绘的,这时候重绘边界就派上用场了。

5.9K40

Flutter技术与实战(2)

Flutter如何完成组件渲染 Flutter 关注如何尽可能快地两个硬件时钟的 VSync 信号之间计算并合成视图数据,然后通过 Skia 交给 GPU 渲染:UI 线程使用 Dart 来构建视图结构数据...布局过程中,渲染对象树中的每个渲染对象都会接收对象的布局约束参数,决定自己的大小,然后父对象按照控件逻辑决定各个子对象的位置,完成布局过程。...为了防止因子节点发生变化而导致整个控件树重新布局,Flutter 加入了一个机制——布局边界(Relayout Boundary),可以某些节点自动或手动地设置布局边界,当边界内的任何对象发生重新布局...以下图为例:节点 1 绘制完自身后,会再绘制节点 2,然后绘制它的节点 3、4 和 5,最后绘制节点 6。...这样一来,Widget 仅是一个轻量级的数据配置存储结构,它的重新创建速度非常快,所以我们可以放心地重新构建任何需要更新的视图,而无需分别修改各个子 Widget 的特定样式。

1.4K10
领券