图层几许学
在这一章中,我们即将看一看图层内部是怎样根据父图层和兄弟图层来操控方位和尺度的。其他我们也会触及怎样办理图层的调集结构,以及它是怎样被主动调整和主动布局影响的。
布局
UIView
有三个比较重要的布局特征:frame
,bounds
和center
,CALayer
对应地叫做frame
,bounds
和position
。
frame
代表了图层的外部坐标(也便是在父图层上占有的空间),bounds
是内部坐标接口是什么({0, 0}一般是图层的左上角),ios14.4.1更新了什么center
和position
都指针式万用表的使用办法图解代表了相对父图层anchorPoint
地址的方位。
记住当对图层做转换的时分,比方旋转或许缩放,frame
实际上代表了掩盖在图层旋手势暗码忘记怎么免除转之后的整个轴对齐的矩形区域,也便是说frame
的宽高或许和bounds
的宽高不再共同了。
锚点
视图的center
特征和图层的position
特征都指定了anchorPoint
相关于父图层的方位。图层的anchorPoint
经过position
来操控它的fr算法是什么ame
的方位,你能够以为anch接口卡orPoint
是用来移动图层的把柄。
默许来说,anchorPoint
坐落图层的中点,所以图层将会以这个点为中心放置。anchorPoint
特征并没有被UIView
接口显显露来,这也是视图的position特征被叫做“cent手势暗码忘记怎么免除er”的原因。可是图层的anchorPoint
能够被移动,比方你能够把它置于图层frame
的左上角,所以图层的内容将会向右下角的position
方向移动,而不是居中。
和之前的contentsRect
和contentsCenter
特征手势含义图解大全相似,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指针式万用表metryFlipped
特ios体系色也设为YES
)。
Z坐标轴
和UIView
严峻的二维坐标系不ios最好玩的手游同,CALayer
存在于一个三维空间傍边。除了我们现已讨论过的position
和anchorPoint
特征之外,CALayer
还有其他两个特征,zPosition
和an算法是什么chorPointZ
,二者都是在Z轴上描绘图层方位的浮点类型。
一般,图层是依手势含义图解大全据它们子图层的subLayers
出现的次序来制作的,这便是所谓的手势数字1到10画家指针式万用表的使用办法图解算法——就想一个画家在墙上作指针画——后被制作上的图层将会隐瞒住算法与数据结构之前的图层,可是经过增加图层的zPosition
,就能够把图层向相机方向前置,所以它手势舞视频就在ios体系悉数其他图层的前面了(或许至少是小于它的zPosition
值的图层的前面算法的有穷性是指)。
Hit Testing
CALayer
并不关怀任何照顾链工算法作,所以不能直接处理触摸作业或许手势。可是它有一系列的指针办法帮你处手势理作业:containsPoint
和hitTest
。
containsPoint
承受一个在本图层坐标下的CGPoint
,假定这个点在图层frame
规模算法工程师内就回来YES
。
hitTe接口crc过错计数st
办法同样承受一个C算法的时刻复杂度取决于GPoint
类型参数,而不是BOOL
类型,它回来图层本身,或许包含这手势舞教程视频慢动作个坐标点的叶子节点图层。这意味着不再需求像运用containsPoint
那样,人工地在每个子图层转手势暗码图画大全简略换或许测验点击的坐标。假指针设这个点指针式万用表在最外面图层的规模之外,则回来nil。
留心当调用图层的h指针的拼音itTe算法规划与剖析st
办法时,测算的次序严峻依赖于图层傍边的图层次序(和UIVi手势舞教程视频慢动作ew处理作业相似)。之前说到的zPosition
特征能够明显改动屏幕上图层的次序,但不能改动触摸作业被处理的次序。
这意味着假定改动了图层的算法z轴次序,你会发现将不能检测到最前方的视图点击作业,这是由于被另一个图层隐瞒住了,尽管它的zPosition
值较小,可是在图层树中的次序接口crc过错计数靠前。
主动布局
当运用视图的时分,能够充算法的有穷性是指分使用UIView
类接口显显露来的UIViewAutoresizi手势暗码ngMask
和NSLayoutConstraint
API,但假定想随意操控CALayer
的布局,就需求手工操作。最简略的办法便是运用CALayerDelegate
如ios下载下函数:
-(void)layoutSu手势暗码blayersOfLayer:(CALayer*)layer;
当图层的bounds
发生改动,或许图层的setNeedsLayout
办法被调用的时分,这个函数将会被执行。这使得你能够手动地从头摆放或许从头调整子视图的大小,可是不能像UIView
的autoresizingMask
和constraints
特征做到自适应屏幕旋转。
这也是为什么最好运用视图而不是独自的图层来构建应用程序的另一个重要原因接口卡之一。
总结
本章触及了CALayer
的几许结构,包含它的frame
,position
和bounds
,介绍了三维空间内图层的概念,以及怎样在独立的图算法剖析的目的是层内照顾作业,终究简略算法的时刻复杂度是指什么说明了在iOS平台中,Core Animation对主动调整和主动布局支撑的短少。