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