ios 私有方法打印出任意视图的视图层次结构

为了辅助你的视图考古,你可以用一个只能用于调试的方法,叫做 recursiveDescription ,它能打印出任意视图的视图层次结构。注意这是一个私有方法, `不应该被包含在任何会被放到 App Store 的代码里`,但它对与视图层次结构实在非常有用。

添加如下打印语句到 tableView:cellForRowAtIndexPath: 中,放在 return 语句之前:

#ifdef DEBUG
    NSLog(@"cell recursive description:\n\n%@\n\n",[cell performSelector:@selector(recursiveDescription)]);
#endif

一旦添加了这一行代码,你就会得到一个警告,也就是 recursiveDescription 未被申明;因为它是一个私有方法,编译器并不知道它的存在,ifdef / endif 包装器将会额外确保这行代码不会被编译进最终的 release 版里。

编译并运行;你会看到控制台全都是 log 语句,类似下面这样:


目前 Cell 里有六个视图:

  1. UITableViewCell 这是最高层的视图。 Frame 显示它有 320 点宽和 44 点高——宽度和高度都喝预期的一致,因为它和屏幕一样宽,而高度就是 44 点。
  2. UITableViewCellScrollView 虽然你不能直接使用这个私有类,但它的名字很好地暗示了它的功能。它的 Size 和 Cell 的一样。据此我们推断它的作用是在 Delete 按钮之上装载滑动出来的内容。
  3. UIButton 它在 Cell 的最右边,就是 Disclosure Indicator 按钮。注意这不是 Delete 按钮。
  4. UIImageView 是上面 UIButton 的子视图,装载着 Disclosure Indicator 的图像。
  5. UITableViewCellContentView 另外一个私有类,它包含 Cell 的内容。这个类对于开发者来说就是 UITableViewCell 的contentView 属性。但它只作为一个 UIView 来暴露在外,这就意味着你只在其上调用使用公开的 UIView 方法;而不能使用任何与这个类关联的任何私有方法。
  6. UILabel 显示 “Item #” 文本。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值