我正在尝试了解calayer几何,但有问题理解这个
职位(我很清楚)
界 (Apple docs说)bounds属性是一个CGRect,它提供了图层(bounds.size)和origin(bounds.origin)的大小。
边界原点用作图形上下文的原点 你覆盖图层的绘图方法。
关于界限,我没有明白这一点。
图层有一个隐含的框架,它是位置的函数, bounds,anchorPoint和transform属性。设置新框架 矩形更改图层的位置和边界属性 适当地,但框架本身不存储。当一个新的框架 指定矩形的边界原点是不受干扰的,而 bounds size设置为框架的大小。图层的位置是 设置到相对于锚点的适当位置。当你拿到时 帧属性值,它是相对于位置计算的, bounds和anchorPoint属性。
复杂得多
需要帮助。
谢谢,问候。
答案 0 :(得分:3)
每个观点都有自己的坐标系统。
任何观点的坐标系统的起源都是(0,0)。因此,任何观点的界限都是这个坐标系的“界限”即。 (0,0,宽度,高度)。
任何视图的位置都是根据父视图的坐标系或superview
计算的。这是任何视图的框架,因此将是(x,y,宽度,高度),其中x和y表示父级坐标系统中左上角和左上角的位置。
ios文档使用此图片解释了这一点
对于最后一个,由于AnchorPoint在视图的“内部”,它在视图的坐标系中表示,因此必须使用边界,就像center
属性一样。
对于CALayer也是如此,其中层的边界在它们自己的坐标系中定义,并且它们的帧由它们的超视图定义。有一些差异,有些是直接的,比如图层有更深的控制,你可以设置zordering并有一个锚点来处理变换等。有些是微妙的,例如CALayer的框架属性是不可动画(即在动画块中更改它没有效果)。
并且,我建议您尝试使用较小的程序来理解差异,除了试图从一两本书中获取所有内容,或者甚至是这样。