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

相關文章
相關標籤/搜索