2012-11-07 66 views
0

當我嘗試設置在Storyboard中設置的單元格中的標籤高度時,它可以工作,但是當我嘗試設置具有它自己的.xib文件的標籤高度時,它不起作用。如何設置UITableViewcell內部的標籤高度?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 



    static NSString *CellIdentifier = @"MainArticleCell"; 

    MainArticleCell *cell = (MainArticleCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

cell.mainArticleTitleLabel.frame = CGRectMake(0, 0, 320, 30); // NOT WORKING 
... 

我連接到標籤成功,因爲我嘗試添加文本的作品。

cell.mainArticleTitleLabel.text = @"lorem ipsum text"; 

問題在哪裏?

UPDATE(改進解釋):

當我檢查之前設置高度是一樣被設置在IB和代碼塞汀後就像是我設置,但在visualy模擬器是一樣的。

NSLog(@"%f", cell.mainArticleTitleLabel.frame.size.height); 
cell.mainArticleTitleLabel.frame = CGRectMake(0, 117, 320, 48); 
NSLog(@"%f", cell.mainArticleTitleLabel.frame.size.height); 

更新2

我甚至可以改變backogrund顏色(但塞汀高度不)

cell.mainArticleTitleLabel.backgroundColor = [UIColor redColor]; 
cell.mainArticleTitleLabel.frame = CGRectMake(0, 117, 320, 48); // NOT WORKING 
+0

你在做什麼在heightForRowAtIndexPath? – rishi

+0

@rishi - - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 166.0; } – CroiOS

+0

這是足夠的高度來適應您的標籤,你需要動態的,這將解決問題。你應該通過調用 - [NSString sizeWithFont:forWidth:lineBreakMode:]來計算你的-tableView:heightForRowAtIndexPath:方法的行高, – rishi

回答

0

的問題是,你不能做到這一點在

cellForRowAtIndexPath 

你必須要在heightForRowAtIndexPath

這裏是一個代碼示例在iOS 6中使用使用屬性文本

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //in my case i get the text of the cell in an array 
    NSString* theText = [anArray objectAtIndex:indexPath.row]; 

    //then calculate the texte size with standard text 
    CGSize textSize = [theText sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; 

    return textSize.height; 
} 

如果

CGRect rectSize = [theText boundingRectWithSize:CGSizeMake(labelWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:NULL]; 

,並返回

return rectSize.size.height; 

我在我的代碼使用這個和它的工作動態細胞高度。

編輯

我讀了不同的評論。看來我的回答沒用,因爲你的問題不是像在你已經做的那樣在heightForRowAtIndexPath中返回一個值。你的問題是它在故事板中工作,而不是在單個xib中。那時我沒有任何幫助。

0

經過很多很多的嘗試,我放棄了這種方式,我嘗試通過故事板上的TableView添加一個單元格,並添加自定義類,它的工作原理。

相關問題