iOS 在UITableViewCell中加入自定义view时view的frame设定注意

由于需要重用同一个布局,于是在cellForRowAtIndexPath中把自定义view加在了cell上,我是这样设定view的frame的

 var screenFrame = UIScreen.mainScreen().bounds
        cellView.frame = CGRectMake(0,0,screenFrame.width,cellHeight)

这里的cellHeight是常量,代表目的cell的高度,我这里写的是90,

但是在iphone6上测试时,有如下调试截图:

可以看到,自定义view的frame不和cell的frame一致!被放大了!

经过研究发现,在cell初始化时都会被初始化为高44,宽320的尺寸,这时我加上了一个高90,宽375(iphone6的宽)的view。cell会在后面进行尺寸调整,把自己调整为正确的尺寸,我这里是 90,375,于是之前加上去的view也被同时放大了,成了136,430. 如下图:

 为什么会是这种放大模式还是不太明白。

正确的写法是,

cellView.frame = CGRectMake(0,0,cell.frame.width,cell.frame.height) 不用具体数值,直接使用cell本身的高和宽!!!

原文地址:https://www.cnblogs.com/breezemist/p/4271184.html