转载自:http://my.oschina.net/ioslighter/blog/390880
一个已经适配了iPhone6/iPhone6Plus的项目,StoryBoard/Xib中的设计视图宽度是320,在tableView:cellForRowAtIndexPath:里打印cell.size,会发现size.width在iPhone6下是320
代码是:
NSLog(@"cell size is %@", NSStringFromCGSize(cell.contentView.bounds.size));
这不是很奇怪?
其实不奇怪,因为你是在cell显示之前打印size的,这个时候的size还是你这个cell在StoryBoard/Xib中的设计视图中的大小。想要显示cell在屏幕上展示的实际大小,可以在layoutSubviews方法里打印,比如:
返回博客列表 原 iPhone6中获取到的UITableViewCell的size.width为啥还是320? yoyoso yoyoso 发布时间: 2015/03/24 15:40 阅读: 5327 收藏: 2 点赞: 0 评论: 0 一个已经适配了iPhone6/iPhone6Plus的项目,StoryBoard/Xib中的设计视图宽度是320,在tableView:cellForRowAtIndexPath:里打印cell.size,会发现size.width在iPhone6下是320 代码是: NSLog(@"cell size is %@", NSStringFromCGSize(cell.contentView.bounds.size)); 这不是很奇怪? 其实不奇怪,因为你是在cell显示之前打印size的,这个时候的size还是你这个cell在StoryBoard/Xib中的设计视图中的大小。想要显示cell在屏幕上展示的实际大小,可以在layoutSubviews方法里打印,比如: - (void)layoutSubviews { [super layoutSubviews]; NSLog(@"self.frame.size is %@", NSStringFromCGSize(self.frame.size)); }
这帮助我解决了另一个问题,我在Cell中增加了一个DTAttributedTextContentView,在实际显示时文字宽度怎么弄都感觉少了一部分。原因就是因为我是在tableView:cellForRowAtIndexPath:中调用[_attributedTextContextView relayoutText];的,换到layoutSubviews里调用就好了。
参考: