一個已經適配了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