2010-09-30 68 views
4

我是堆棧溢出和可可觸摸開發的新手。細胞的detailTextLabel的寬度與UITableViewCellStyleValue2風格

我想用多行detailTextLabel使用UITableViewCellSytleValue2構建UITableViewCell。

所以我實現了的tableView:heightForRowAtIndexPath:這樣的:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 

if (indexPath.row != 4) { 
    return tableView.rowHeight; 
} 

NSString *text = toDoItem.note; 
UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]]; 
CGSize withinSize = CGSizeMake(167, 1000); 
CGSize size = [text sizeWithFont:font constrainedToSize:withinSize lineBreakMode:UILineBreakModeCharacterWrap]; 

CGFloat height = size.height + 26; 

    return height;  
} 

我想通了detailTextLabel的寬度大約爲167px,但是想確切地知道它,不喜歡它硬編碼(考慮方向變化) 。

我試圖訪問detailTextLabel的框架或邊界,但它的寬度返回0.0。

感謝您的幫助!

+1

我以200px的字體大小工作。這對我來說工作得很好。 – testing 2010-10-27 10:57:54

回答

0

創建一個自定義單元格

+1

謝謝你的回答,但實際上我只是不想:-)。我無法想象它不可能計算出該標籤的寬度,因爲它顯然具有固定的寬度。 – nubbel 2010-09-30 18:12:45

0

你可以在UITableViewCell中的自定義實現當且僅當沒有設置,設置這些各種各樣的參數layoutSubviews定義一組靜態變量。請務必先致電[super layoutSubviews]

這樣你就可以繼承設備的默認設置,而且你永遠都不會懷疑。
AFAIK,單元格寬度爲self.contentView.frame.size.width。你可以使用self.textLabel.frame.size.widthself.detailTextLabel.frame.size.widthself.accessoryView.frame.size.width +之間的填充來找出細節。我不是100%的填充。但是,您可以通過檢測標籤寬度和contentView框架寬度之間的差異來計算填充。

對不起。我忘記了細胞的尺寸總是處於不斷變化的狀態;絕對不能依賴期限。您可以根據擁有的UIViewController的寬度以及單元格textLabel來派生標籤寬度。由於計算在控制器級別,因此您將知道tableView是否分組。如果是這樣,你可以簡單地將寬度縮小0.8倍左右,然後減去寬度。

同樣對於字體:self.textLabel.font.pointSizeself.detailTextLabel.font.pointSize