2013-06-04 68 views
0

我想將我的標籤設置爲在UITableViewCell中具有固定寬度,以便我的文本可以位於兩行以上但我總是會保留空間在單元格的右側顯示另一個視圖。試圖使UITableViewCell的標籤寬度有限但高度不受限制

到目前爲止,我試過這樣做,它不起作用。 UILabel只是穿過整個惡夢的細胞。我希望它受到限制,使得文本在到達第二行之前可能達到通過單元格的方式的3/4。

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

    static NSString *MyIdentifier = @"MyIdentifier"; 

    UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    if (cell == nil){ 
     cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyle)UITableViewCellStyleDefault reuseIdentifier:MyIdentifier]; 

     [cell.textLabel setLineBreakMode:NSLineBreakByWordWrapping]; 
     cell.textLabel.minimumScaleFactor = 0; 
     [cell.textLabel setNumberOfLines:0]; 
     [cell.textLabel setFont:[UIFont boldSystemFontOfSize:FONT_SIZE]]; 
     [cell.textLabel setBackgroundColor:[UIColor clearColor]];; 

     NSString * labelText = myString; // lets just pretend this works. I have somethign else here. 

     CGSize constraint = CGSizeMake((CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2) - 100.0f), 20000.0f); // Ultimate cell 
     CGSize size = [labelText sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping]; 
     [cell.textLabel setText:labelText]; 
     [cell.textLabel setFrame:CGRectMake(CELL_CONTENT_MARGIN, CELL_CONTENT_MARGIN, CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2) - 180.0f, MAX(size.height, 36.0f))]; // Lets me get the height of the text, supposedly. 
     } 

// more stuff.... 

} 
+0

看起來你要根據你輸入的文本的高度的單元格的高度會這樣呢? –

回答

1

你應該試試這個link,可能你會讓你的問題得到解決或得到一個想法。

乾杯!

+0

雖然其他鏈接更令人愉快,更值得回答,但我忘了這個鏈接。我剛纔使用它,它包含我的答案。 –

2

您需要繼承的UITableViewCell並設置標籤的大小layoutSubviews

雖然在創建單元格時標籤的大小正確,但每次在屏幕上繪製單元格時,UITableViewCell方法都會覆蓋大小,因此您看不到任何更改。

+0

UITableViewCells的子類化看起來像是一個巨大的痛苦,因爲它與UITableView的關聯。有更容易的方法嗎? –

+0

你看過其他的UITableViewCellStyles嗎? http://coding-is-kind-of-magic.blogspot.co.uk/2012/02/uitableview-has-some-build-in-styles.html。其中之一可能很有用,但子類UITableViewCell並不是很難。你只需要實現'layoutSubviews'。在'layoutSubviews'中,只需設置單元的每個子視圖的框架。 – Josh

0

試試這個,你得到的標籤的高度字符串大小

CGSize maximumLabelSize = CGSizeMake(width, FLT_MAX); 
    CGSize expectedLabelSize = [string sizeWithFont:font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByTruncatingTail]; 
//you get height from expectedLabelSize.height 
相關問題