gpt4 book ai didi

ios - 如何使用自动布局根据数据大小在表格 View 单元格上增长 UItextview

转载 作者:行者123 更新时间:2023-11-30 14:08:10 25 4
gpt4 key购买 nike

嗨,我是 ios 初学者,在我的项目中,我在 tableview 单元格上添加了两个 TextView ,它们需要根据数据大小进行增长

根据我的代码,第一个 TextView 没有增长,第二个 TextView 根据数据大小增长,我在这里做错了什么,请帮助我

代码如下:

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

formulaText = [[UITextView alloc]init];
formulaText.font = [UIFont fontWithName:@"Bitter-Regular" size:15.0f];
formulaText.translatesAutoresizingMaskIntoConstraints = NO;
formulaText.textColor = [UIColor whiteColor];
formulaText.backgroundColor = [UIColor lightGrayColor];
formulaText.scrollEnabled = NO;
[cell.contentView addSubview:formulaText];

formulaText1 = [[UITextView alloc]init];
formulaText1.font = [UIFont fontWithName:@"Bitter-Regular" size:15.0f];
formulaText1.translatesAutoresizingMaskIntoConstraints = NO;
formulaText1.backgroundColor = [UIColor orangeColor];
formulaText1.textColor = [UIColor whiteColor];
formulaText1.scrollEnabled = NO;
[cell.contentView addSubview:formulaText1];

NSDictionary * views = NSDictionaryOfVariableBindings(formulaText,formulaText1);

NSArray * formulaH = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[formulaText]-10-|"
options:0
metrics:nil
views:views];

NSArray * formulaH1 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[formulaText1]-10-|"
options:0
metrics:nil
views:views];

NSArray * textFieldConstraintV = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[formulaText]-10-[formulaText1]-|"
options:0
metrics:nil
views:views];

[cell.contentView addConstraints:formulaH];
[cell.contentView addConstraints:formulaH1];
[cell.contentView addConstraints:textFieldConstraintV];
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

return UITableViewAutomaticDimension;
}

最佳答案

你必须自己快速转换我的代码。

我的代码不是基于约束的,因为我没有受到约束,但逻辑对我来说是完美的,没有约束。

在下面的代码中,我在单元格中有一个标签,它可以增长,它的位置是x=20,y=5,宽度= 255,高度=可增长。

您可以使用 heightForRowAtIndexpath 方法

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//get string from array using indexpath
CGSize newLabelsize = [strComment sizeWithFont:[UIFont fontWithName:@"CenturyGothic" size:10] constrainedToSize:CGSizeMake(width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];

//Give your font and it's size for calculating data size.
//in the above strComment is a string put in textview and
//width of your textview = width and
//MAXFLOAT = height for grow and it is a macro so you can put it directly.
//now you have new size of the textview so calculate with other outlet and return new height of the cell.

return 5+newLabelsize.height+5;
// last +5 is for bottom space of label.
// first 5+ is y pos of you of label.

}

上面的代码只是修复你的单元格大小

现在在 cellforrow 方法中进行相同的计算来设置 TextView 大小

CGSize newLabelsize = [strComment sizeWithFont:[UIFont fontWithName:@"CenturyGothic" size:10] constrainedToSize:CGSizeMake(width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];

cell.textview.frame = CGRectMake(cell.textview.frame.origin.x,cell.textview.frame.origin.y,cell.textview.frame.size.width,newLabelsize.height);

现在你终于如愿以偿了。希望这对您有帮助。

谢谢你!

关于ios - 如何使用自动布局根据数据大小在表格 View 单元格上增长 UItextview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32086192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com