0

看看下面的图片

在此处输入图像描述

我正在寻找 UIView,但我找不到这个所谓的 _frame 结构。

苹果内部究竟如何存储 UIView 框架?在调试过程中找出这一点的最简单方法是什么?

4

1 回答 1

3

AUIView不存储它的框架;它只是返回其图层的框架。

ACALayer也不存储它的帧。当您向图层询问其帧时,图层会根据图层的boundspositionanchorPoint和计算帧transform。(可能它缓存了 computed frame,但如果你反汇编该-[CALayer frame]方法,你会发现从其他属性计算它的代码。)

并且 aCALayer不会将任何这些属性存储在实例变量中。相反,它有一个指向CA::Layer实例的指针,该实例是一个私有 C++ 对象。该 C++ 对象存储层的属性。该view->_layer->_attr.layer字段是指向私有CA::Layer实例的指针。

如果你想在调试器中看到一个视图的框架,你必须给它发送一条消息。您可以询问它的描述:

po _topBubble

或者你可以询问它的框架:

p (CGRect)[_topBubble frame]
于 2012-10-23T23:38:37.877 回答