我想设置我的标签在UITableViewCell
中有一个固定的宽度,这样我的文字就可以在2行以上,但我总是在单元格的右侧有预留空格来显示另一行图。
到目前为止,我尝试过这样做但它不起作用。 UILabel
恰好在整个darned单元格中运行。我希望它受到限制,使得文本在包裹到第二行之前可能达到通过单元格的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 :(得分:2)
您需要为UITableViewCell创建子类,并在layoutSubviews
中设置标签的大小。
虽然在创建单元格时标签的大小正确,但每次在屏幕上绘制单元格时,UITableViewCell方法都会“覆盖”大小,因此您看不到任何更改。
答案 1 :(得分:1)
你应该尝试这个link,可能会让你的问题得到解决或者有所了解。
干杯!!!
答案 2 :(得分:0)
试试这个,你得到字符串大小的标签高度
CGSize maximumLabelSize = CGSizeMake(width, FLT_MAX);
CGSize expectedLabelSize = [string sizeWithFont:font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByTruncatingTail];
//you get height from expectedLabelSize.height