Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法在tableView:cellForRowAtIndexPath:方法中设置标签框_Ios_Uitableview_Ios7_Uilabel - Fatal编程技术网

Ios 无法在tableView:cellForRowAtIndexPath:方法中设置标签框

Ios 无法在tableView:cellForRowAtIndexPath:方法中设置标签框,ios,uitableview,ios7,uilabel,Ios,Uitableview,Ios7,Uilabel,无法在ableView:cellForRowAtIndexPath:方法中设置tableViewCell中的标签框架。事实上,如NSLog中所示,标签的框架已更改,但未显示在视图上我希望标签(绿色背景)应该比图片中的高,这样可以显示其中的所有文本。带有标识符的原型单元“单元”在情节提要中创建。任何帮助都将不胜感激 ps:Xcode 5.0.2,iOS7 - (void)viewDidLoad { [super viewDidLoad]; NSString * str = @"Do

无法在
ableView:cellForRowAtIndexPath:
方法中设置
tableViewCell
中的标签框架。事实上,如
NSLog
中所示,标签的框架已更改,但未显示在视图上我希望标签(绿色背景)应该比图片中的高,这样可以显示其中的所有文本。带有
标识符的
原型单元
“单元”在
情节提要
中创建。任何帮助都将不胜感激

ps:Xcode 5.0.2,iOS7

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString * str = @"Do any additional setup after loading the view, typically from a nib Do any additional setup after loading the view, typically from a nib Do any additional setup after loading the view, typically from a nib";
    NSArray *array = [NSArray arrayWithObjects:str, str, str , str, str, str, nil];
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSInteger row = indexPath.row;
    CGSize sizeConstraint = CGSizeMake(tableView.frame.size.width, 2000);
    CGSize size = [[array objectAtIndex:row] boundingRectWithSize:sizeConstraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont fontWithName:FontName size:FontSize]} context:nil].size;

    return size.height + 20;
}


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSInteger row = indexPath.row;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    UILabel *label = (UILabel *)[cell.contentView viewWithTag:1];
    label.autoresizingMask = UIViewAutoresizingNone;
    label.numberOfLines = 0;
    label.lineBreakMode = NSLineBreakByWordWrapping;
    label.font = [UIFont fontWithName:FontName size:FontSize];
    label.backgroundColor = [UIColor greenColor];
    label.text = [array objectAtIndex:row];

    CGSize sizeConstraint = CGSizeMake(tableView.frame.size.width, 2000);
    CGSize size = [label.text boundingRectWithSize:sizeConstraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: label.font} context:nil].size;
    CGRect rect = label.frame;
    rect.size.height = size.height;
    [label setFrame:rect];
    NSLog(@"label height :%f", label.frame.size.height);
    [label sizeThatFits:sizeConstraint];
    return cell;
}

当您滚动
表格视图时,您可以看到第一个和第二个单元格中的标签现在显示良好。(在这里,我只是滚动出两个单元格并将它们拉回来。)


在您的帖子中,我找不到用于设置标签框架的labelBible定义

使用“约束”可以快速:

这样,您就不必在
-(UITableViewCell*)tableView:(UITableView*)tableView cell for rowatinexpath:(nsindepath*)indepath
方法中执行任何操作

编辑:要使用约束:
必须选中使用自动布局


希望它能正常工作。

只需从标签框架的文件检查器中取消选中自动布局。

@iDev然后您就可以看到tableview的分隔线ClearySet bound而不是frame为什么要使用
[label sizeThatFits:sizeConstraint]设置框架后?@NicolasBonnet我尝试过解决问题,但不起作用。@CoolMonster似乎不起作用。您是否尝试过:
[label setFrame:cell.frame]
?[label setFrame:cell.frame]不起作用。为什么不能呢。和“所选视图没有约束。在构建时,将为视图生成显式的左、顶、宽和高约束。”我无法设置标签的约束…我通过取消选中序列图像板中我的UILable的“使用自动布局”属性修复了我的问题。在这篇文章中,我找到了添加标签约束的解决方案。如果我取消选中“使用自动布局”,我问题中的代码工作得很好:)谢谢你的回答:)