如何在自定义 UITableViewCell 中增加 Label 的高度
Posted
技术标签:
【中文标题】如何在自定义 UITableViewCell 中增加 Label 的高度【英文标题】:How to increase the height of Label in custom UITableViewCell 【发布时间】:2012-12-06 20:44:00 【问题描述】:我创建了一个自定义 UITableViewCell ,我正在从 xib 加载,所以现在文本可能是动态的,所以我希望 UILabel 的高度出现在 Custom UITableViewCell dynamic 中,
自定义UITableViewCell的代码是
#import <UIKit/UIKit.h>
@interface NarrativeCell : UITableViewCell
@property(nonatomic,retain) IBOutlet UILabel *noteTitle;
@property(nonatomic,retain) IBOutlet UILabel *noteDate;
@property(nonatomic,retain) IBOutlet UILabel *noteDesc;
@property(nonatomic,retain) IBOutlet UIImageView *sideImage;
@property(nonatomic,retain) IBOutlet UIButton *imageButton;
@property(nonatomic,retain) IBOutlet UIButton *audiostartButton;
@property(nonatomic,retain) IBOutlet UIButton *audioStopButton;
@end
这里是代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"NarrativeCell";
NarrativeCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
NSLog(@"New Cell Made");
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"NarrativeCell" owner:nil options:nil];
for(id currentObject in topLevelObjects)
if([currentObject isKindOfClass:[NarrativeCell class]])
cell = (NarrativeCell *)currentObject;
break;
Narratives *n=(Narratives *)[tableArray objectAtIndex:indexPath.row];
CGRect newFrame = cell.noteDesc.frame;
NSLog(@"old %f",newFrame.size.height);
newFrame.size.height = expectedLabelSize.height;
//yourLabel.frame = newFrame;
NSLog(@"new %f",newFrame.size.height);
newFrame.size.height = expectedLabelSize.height;
[cell.noteDesc setFrame:newFrame];
[cell.noteDesc setNumberOfLines:0];
[cell.noteDesc setText:n.cfcnl_note];
return cell;
但不幸的是我无法调整高度的大小
[cell.noteDesc setFrame:newFrame];
我认为因为它是从 nib 文件加载的,请帮助我如何动态更改 UILabel 的高度呈现自定义 UITableViewCell(在 nib 中创建)。
/////////编辑
在此处查看 old new 的输出 旧 21.000000 新的 42.000000
【问题讨论】:
你得到正确的单元格高度了吗?是不是 noteDesc 用新框架调整了大小,但单元格的框架更小,所以 noteDesc 没有完全显示? 你所拥有的似乎还不错。尝试做 cell.noteDesc.frame = CGMake(0,0,50,50); cell.noteDesc.backgroundColor = [UIColor redColor];或者看看它是否在明确设置时改变它。这将排除错误的传递尺寸。 @TravisM。它不再影响了 我想我是从笔尖加载的,这可能是问题所在? 我认为这无关紧要。我从笔尖加载所有自定义表格单元格,我可以更改它们的属性。您确定您的 UILabel 已连接到您的子类中的 noteDesc 属性吗? 【参考方案1】:您的单元格看起来比文本所需的要小。因此,您需要使用 heightForRowAtIndexpath 方法找到正确的单元格高度。如果您在单元格内有足够的空间来调整大小,您应该向我们展示您的 XIB 子视图层次结构,似乎您做错了什么(一些超级视图剪辑来限制您的标签)。
附:无论如何,这不是因为您使用的是界面生成器。
【讨论】:
以上是关于如何在自定义 UITableViewCell 中增加 Label 的高度的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义 UITableViewCell 中控制 UITextFields 的编辑
如何借助 AutoLayout 在自定义 UITableviewCell 中添加自定义 UIView(xib)?
如何捕获 UIButton 事件:在自定义 UITableViewCell 实现中添加了 UIButton
如何在自定义 UITableViewCell 中创建 UIImageVIew? (迅速)
如何让 UITableViewCell 在自定义 UIView 子类上调用 setHighlighted 或 setSelected?