为什么在UIView中有框架矩形和边界矩形?

虽然在黑暗的夜晚,但我不明白为什么有两个不同的矩形:框架和边界。

就像我所理解的那样,只有一个矩形就可以做任何事情。 将视图本身相对于另一个坐标系定位,然后将其内容剪切到指定的大小。 你还有什么要做两个矩形? 他们如何与海誓山盟互动?

有没有人有一个很好的解释? 来自苹果公司的那个小孩拿着水果对理解来说不是很好。

这里是作者:

  • frame是视图的位置 (相对于超视图)
  • bounds是视图允许绘制的地方 (相对于它自己)

更多的澄清:

如果您将视图定位在其超级视图中,则几乎总是会更改框架原点。

如果你裁剪UIView正在绘制的地方,你几乎总是修改它的边界。

请注意,您可以有比框架更大的边界。 也就是说,你可以画出你所在的位置“不在线”。

框架在超视图的坐标系中,界限在视图的坐标系中。 从我的angular度来看,两者都是一个方便。 框架似乎是两个更有用的,除非有一些情况下,我不知道子视图可以有一个完全不同的坐标系(比如不同的像素比超视图)。

我最近遇到了麻烦,做了一些实验。 bounds属性限制了UIView可以绘制的位置,但限制其子视图。 另一件事边界控件是触摸事件调度。 根据我所能说的,一个观点不会收到超出界限的触摸事件。 而且,父视图边界之外的任何子视图也不会接收触摸事件。 在这些情况下,当子视图的大小和位置发生变化时,您必须非常仔细地更新容器视图的边界。 一切都会一切正常(因为子视图不会被父母的界限所限制),但是触摸不会被接收到。

(这实际上应该是对以前的post的回复,但是因为我还不能回复,所以在这里被卡住了…)