iPhone6中获取到的UITableViewCell的size.width为啥仍是320?

一个已经适配了iPhone6/iPhone6Plus的项目,StoryBoard/Xib中的设计视图宽度是320,在tableView:cellForRowAtIndexPath:里打印cell.size,会发现size.width在iPhone6下是320ios

代码是:ui

NSLog(@"cell size is %@", NSStringFromCGSize(cell.contentView.bounds.size));

这不是很奇怪?
设计

其实不奇怪,由于你是在cell显示以前打印size的,这个时候的size仍是你这个cell在StoryBoard/Xib中的设计视图中的大小。想要显示cell在屏幕上展现的实际大小,能够在layoutSubviews方法里打印,好比:code

- (void)layoutSubviews {
    
    [super layoutSubviews];
    NSLog(@"self.frame.size is %@", NSStringFromCGSize(self.frame.size));   
}

这帮助我解决了另外一个问题,我在Cell中增长了一个DTAttributedTextContentView,在实际显示时文字宽度怎么弄都感受少了一部分。缘由就是由于我是在tableView:cellForRowAtIndexPath:中调用[_attributedTextContextView relayoutText];的,换到layoutSubviews里调用就行了。
get


参考:it

UITableView cell width on iOS 8 stuck at 320ptio

相关文章
相关标签/搜索