当我尝试在Storyboard中设置的单元格中设置标签的高度然后它可以工作,但是当我尝试设置拥有它自己的.xib文件的标签的高度时,它就不起作用了。
- (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";
问题出在哪里?
更新(改进说明):
当我在设置之前检查高度就像设置在IB上并且在代码中设置之后就像我设置但在模拟器中的视觉是相同的。
NSLog(@"%f", cell.mainArticleTitleLabel.frame.size.height);
cell.mainArticleTitleLabel.frame = CGRectMake(0, 117, 320, 48);
NSLog(@"%f", cell.mainArticleTitleLabel.frame.size.height);
更新2
我甚至可以改变背景颜色(但没有设置高度)
cell.mainArticleTitleLabel.backgroundColor = [UIColor redColor];
cell.mainArticleTitleLabel.frame = CGRectMake(0, 117, 320, 48); // NOT WORKING
答案 0 :(得分:0)
问题是您无法在
中执行此操作cellForRowAtIndexPath
你必须在heightForRowAtIndexPath
中使用它这是一个代码示例
- (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;
}
如果在iOS 6中使用属性文本
CGRect rectSize = [theText boundingRectWithSize:CGSizeMake(labelWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:NULL];
并返回
return rectSize.size.height;
我在我的代码中使用它,它适用于动态单元格高度。
修改强>
我读了不同的评论。看来我的答案毫无用处,因为你的问题不在于返回heightForRowAtIndexPath中的值,因为你已经在做了。你的问题是它在故事板中工作而不是单个xib。那时我没有帮助。
答案 1 :(得分:0)
经过多次尝试后,我放弃了这种方式,并尝试在故事板上通过TableView添加一个单元格并添加自定义类,并且它可以正常工作。