项目中,用xib的方法进行了cell的创建,因需求需要对cell进行布局,当时在awakerfromNib进行布局。
创建控件的时候,计算控件宽度的算法中用了 CGRectGetMaxX(button.frame)这个函数,结束适配的时候出问题了。然后我打印button的origin.x,发现不论 iphone5,还是6.这个值不变,一直为xib里面的值。然后我在layoutSubView里面打印也不变化。然后我猜想,是否cell真正的创建显示之前,这个值都为xib里面的数值。我在tableView的cellForRow代理方法时,让[cell setNeedsLayout];这次打印的数值就正确了。
总结:cell里面的子控件计算有关宽度时,可以用屏幕宽减去“789”的宽,或者当cell被创建出来以后让其刷新布局;