图层几许学

在这一章中,我们即将看一看图层内部是怎样根据父图层和兄弟图层来操控方位和尺度的。其他我们也会触及怎样办理图层的调集结构,以及它是怎样被主动调整和主动布局影响的。

布局

UIView有三个比较重要的布局特征:frameboundscenterCALayer对应地叫做frameboundsposition

frame代表了图层的外部坐标(也便是在父图层上占有的空间),bounds是内部坐标接口是什么({0, 0}一般是图层的左上角),ios14.4.1更新了什么centerposition指针式万用表的使用办法图解代表了相对父图层anchorPoint地址的方位。

记住当对图层做转换的时分,比方旋转或许缩放,frame实际上代表了掩盖在图层旋手势暗码忘记怎么免除转之后的整个轴对齐的矩形区域,也便是说frame的宽高或许和bounds的宽高不再共同了。

锚点

视图的center特征和图层的position特征都指定了anchorPoint相关于父图层的方位。图层的anchorPoint经过position来操控它的fr算法是什么ame的方位,你能够以为anch接口卡orPoint是用来移动图层的把柄

默许来说,anchorPoint坐落图层的中点,所以图层将会以这个点为中心放置。anchorPoint特征并没有被UIView接口显显露来,这也是视图的position特征被叫做“cent手势暗码忘记怎么免除er”的原因。可是图层的anchorPoint能够被移动,比方你能够把它置于图层frame的左上角,所以图层的内容将会向右下角的position方向移动,而不是居中。

和之前的contentsRectcontentsCenter特征手势含义图解大全相似,anchorPoint单位坐标来描绘,也便是图层的相对坐标,图层左上角是{0, 0},右下角是{1, 1},因而默许坐标是{算法的五个特性0.5, 0.5}。anchorPoint能够经过指定x和y值小于0或许大于1,使它放置在图层规模之外算法剖析的目的是

原书经过一个模拟闹钟的项目来举例说明了在什么场合需求改动anchorPoint。原本挂钟的图片在围绕着中心旋转,能够经过给每个指针的achorPoios是什么意思int做一些平移,获得一个等待的支点。

坐标系

和视图一样,图层在图层树傍边也是相关于父图层按层级联络放置,一个图层的posit接口crc过错计数ion依赖于它父图层的bounios体系ds,假定父图层发生了移动,它的悉数子图层算法的有穷性是指也会跟着移动。

这样关于放置图层会愈加便利,由于你能够经过移动根图层来将它的子图层作为一个全体来移动,可是有时分你需求知道一个图层的肯定方位,或许是相关于另一个图层的方位,而不是它其时父图层的方位。

CALayer给不同坐标系之间的图层转化供应了一些东西类办法:

- (CGPoint)convertPoint:(CGPoint)point fromLayer:(CALayer *)layer手势;
- (CGPoint)convertPoint:(CGPoint)point toLayer:(CALayer *)layer;
- (CGRect)convertRect:(CGRect)rect fromLayer:(CALayer *)layer;
- (CGRect)convertRec手势暗码图画大全简略t:(CGRect)rect toLayer:(CALayer *ios15正式版本什么时候发布)layer;

这些办法能够把界说在一个图层坐标系下的点或许矩形转化算法规划与剖析成另一个图层坐标系下算法规划与剖析的点或许矩形。

翻转的几许结构

常规来说,在iOS上,一个图层的position坐落父图层的左指针c语言上角,可是在Mac OS上,一般是坐落左上角。Core Animation能够经过geometryFlipped特征来算法与数据结构适配这两种情况,它抉择了一个图层的坐标是否相关于父图层笔直翻指针式万用表的使用办法图解转,是一个BOO手势舞教程视频慢动作L类型。在iOS上通手势舞过设置它为YES意味着它的子图层将会被笔直翻转,也便是将会沿着底部排版而不是一般的顶部(它的悉数子图层算法的五个特性也同理,除非把它们的geo指针式万用表metryFlippedios体系色也设为YES)。

Z坐标轴

UIView严峻的二维坐标系不ios最好玩的手游同,CALayer存在于一个三维空间傍边。除了我们现已讨论过的positionanchorPoint特征之外,CALayer还有其他两个特征,zPositionan算法是什么chorPointZ,二者都是在Z轴上描绘图层方位的浮点类型。

一般,图层是依手势含义图解大全据它们子图层的subLayers出现的次序来制作的,这便是所谓的手势数字1到10画家指针式万用表的使用办法图解算法——就想一个画家在墙上作指针画——后被制作上的图层将会隐瞒住算法与数据结构之前的图层,可是经过增加图层的zPosition,就能够把图层向相机方向前置,所以它手势舞视频就在ios体系悉数其他图层的前面了(或许至少是小于它的zPosition值的图层的前面算法的有穷性是指)。

Hit Testing

CALayer并不关怀任何照顾链工算法作,所以不能直接处理触摸作业或许手势。可是它有一系列的指针办法帮你处手势理作业:containsPointhitTest

containsPoint承受一个在本图层坐标下的CGPoint,假定这个点在图层frame规模算法工程师内就回来YES

hitTe接口crc过错计数st办法同样承受一个C算法的时刻复杂度取决于GPoint类型参数,而不是BOOL类型,它回来图层本身,或许包含这手势舞教程视频慢动作个坐标点的叶子节点图层。这意味着不再需求像运用containsPoint那样,人工地在每个子图层转手势暗码图画大全简略换或许测验点击的坐标。假指针设这个点指针式万用表在最外面图层的规模之外,则回来nil。

留心当调用图层的h指针的拼音itTe算法规划与剖析st办法时,测算的次序严峻依赖于图层傍边的图层次序(和UIVi手势舞教程视频慢动作ew处理作业相似)。之前说到的zPosition特征能够明显改动屏幕上图层的次序,但不能改动触摸作业被处理的次序。

这意味着假定改动了图层的算法z轴次序,你会发现将不能检测到最前方的视图点击作业,这是由于被另一个图层隐瞒住了,尽管它的zPosition值较小,可是在图层树中的次序接口crc过错计数靠前。

主动布局

当运用视图的时分,能够充算法的有穷性是指分使用UIView类接口显显露来的UIViewAutoresizi手势暗码ngMaskNSLayoutConstraintAPI,但假定想随意操控CALayer的布局,就需求手工操作。最简略的办法便是运用CALayerDelegateios下载下函数:

-(void)layoutSu手势暗码blayersOfLayer:(CALayer*)layer;

当图层的bounds发生改动,或许图层的setNeedsLayout办法被调用的时分,这个函数将会被执行。这使得你能够手动地从头摆放或许从头调整子视图的大小,可是不能像UIViewautoresizingMaskconstraints特征做到自适应屏幕旋转。

这也是为什么最好运用视图而不是独自的图层来构建应用程序的另一个重要原因接口卡之一。

总结

本章触及了CALayer的几许结构,包含它的framepositionbounds,介绍了三维空间内图层的概念,以及怎样在独立的图算法剖析的目的是层内照顾作业,终究简略算法的时刻复杂度是指什么说明了在iOS平台中,Core Animation对主动调整和主动布局支撑的短少。