首页 > 代码库 > UITableViewCell的层级

UITableViewCell的层级

1、一个在contentView 上的imageView:

imageView(UITableViewCell中的)的superView是UITableViewCellContentView。

imageView的superView的superView是UITableViewCell

imageView的superView的superView的superView是UITableView


2、在iOS6上UITableViewCell的层级为:

UITableViewCell—>UITableViewCellContentView;
在iOS7上UITableViewCell的层级为:
UITableViewCell—>UITableViewCellScrollView—>UITableCellContentView。
3、iOS7上多了一层,cell不再是contentView的superview,于是

    [cell insertSubview:myView belowSubview:cell.contentView];

这个方法执行失败,相当于只是[cell addSubview:myView];,所以达不到想要的效果。

【解决方案】:
要在iOS6和iOS7上都能实现将myView插入到contentView底下的效果,将语句改成如下方式即可:

    [cell.contentView.superview insertSubview:myView belowSubview:cell.contentView];


【吐槽】:
坑爹的苹果,坑爹的iOS7,我暂时没有找到任何文档有关于UITableViewCellScrollView这个类的描述,也无法直接引用这个类,Xcode会提示”Unknown type name ‘UITableViewCellScrollView’”。还好可以用上面的方法间接引用,否则完全是作死啊。

UITableViewCell的层级