看看下面的图片
我正在寻找 UIView,但我找不到这个所谓的 _frame 结构。
苹果内部究竟如何存储 UIView 框架?在调试过程中找出这一点的最简单方法是什么?
看看下面的图片
我正在寻找 UIView,但我找不到这个所谓的 _frame 结构。
苹果内部究竟如何存储 UIView 框架?在调试过程中找出这一点的最简单方法是什么?
AUIView
不存储它的框架;它只是返回其图层的框架。
ACALayer
也不存储它的帧。当您向图层询问其帧时,图层会根据图层的bounds
、position
、anchorPoint
和计算帧transform
。(可能它缓存了 computed frame
,但如果你反汇编该-[CALayer frame]
方法,你会发现从其他属性计算它的代码。)
并且 aCALayer
不会将任何这些属性存储在实例变量中。相反,它有一个指向CA::Layer
实例的指针,该实例是一个私有 C++ 对象。该 C++ 对象存储层的属性。该view->_layer->_attr.layer
字段是指向私有CA::Layer
实例的指针。
如果你想在调试器中看到一个视图的框架,你必须给它发送一条消息。您可以询问它的描述:
po _topBubble
或者你可以询问它的框架:
p (CGRect)[_topBubble frame]