我使用Autolayout和Constraints进行视图和表格视图设计。我已经使用Autolayout成功设计了视图。
但是我在表格视图单元格内容中还有一个要求。 **我想相应地增加LABEL高度文本(取决于标签文本的内容 - 标签1)。请查看附加的屏幕截图。我使用Storyboard将CELL设置为表格视图。表视图单元格我已经拍了3个标签。**
Label -2 :
我设置了约束标签-2,前沿约束-5,后缘约束-5,上边缘约束-10,底部约束-0。在这里,我设置了Label-2 20的高度。它已修复,我不想增加它们。
Label -3 :
我设置了约束标签-3,前沿约束-5,后缘约束-5,上边缘约束-0,底部约束-5。在这里,我设置了Label-3 20的高度。它已修复,我不想增加它们。
我想根据文字增加Label 1的高度。
**_Label -1 :_**
我想增加Label 1的大小。我设置了约束label-1,前沿约束-5,后缘约束-5,上边缘约束-5,底部约束-10。这里我设置了Label-1 35的高度。
目前,我还没有设置Label-1高度约束的约束。我也试过设置高度约束,但它不能对高度增加问题生效。 我为Label-1创建了方法。它是计数标签-1的大小并相应地增加它。但它不是返回当前的高度。
在这里,我设置表格视图单元格大小为95.它将使用表格视图高度委托方法动态增加。
_
源代码:-_
UITableViewSource方法:
//计算表格视图单元格的高度
public override nfloat GetHeightForRow (UITableView tableView, NSIndexPath indexPath){
TableViewCellClass cell = null;
cell = (TableViewCellClass)tableView.DequeueReusableCell(cellIdentifier);
return cell.RequiredTableViewCellHeight(tableView.Bounds.Size.Width);
}
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath){
TableViewCellClass cell = (TableViewCellClass)tableView.DequeueReusableCell(cellIdentifier,indexPath);
//Add Data In Cell
cell.Updatecell (tableItems [indexPath.Row].Label1Data, tableItems [indexPath.Row].Label2Data, tableItems [indexPath.Row].Label3Data);
return cell;
}
TableView单元格方法: -
partial class TableViewCellClass : UITableViewCell{
public TableViewCellClass (IntPtr handle) : base (handle)
{
}
public void Updatecell (string lbl1Data, string lbl2Data, DateTime lbl3Data){
Label1.Text = lbl1Data; //I want to increases height of label1
Label2.Text = lbl2Data;
Label3.Text = lbl3Data.ToString();
//Here Below, fixed text and size for Label-2 and Label-3. It was fixed and never increase it's height
Label2.SizeToFit();
Label2.AdjustsFontSizeToFitWidth = true;
Label3.SizeToFit();
Label3.AdjustsFontSizeToFitWidth = true;
}
// RequiredTableViewCellHeight方法,用于计算标签高度并根据它增加单元格。
public float RequiredTableViewCellHeight(nfloat screenWidth){
Console.WriteLine("screenWidth : {0}",screenWidth); //Here we get the screen size of table view WIDTh
//Here make dynamic lable
Label1.Lines = 0;
Label1.AdjustsFontSizeToFitWidth = false;
UIFont cellFont = Label1.Font;
nfloat lbl1widthVal = screenWidth - 10; //Here we Minus 10 due to leading and trailing constraint. So Width not effected.
//Below Count the size of label height accordingly text and font size. Size not return actuall size. It's some time return always same.
CGSize lbl1Size = ((NSString) Label1.Text).StringSize(cellFont,constrainedToSize:new CGSize(lbl1widthVal,400.0f),lineBreakMode:UILineBreakMode.WordWrap);
Console.WriteLine("lbl1Size Total Size: {0}",lbl1Size);
int rowHeight = (int)lbl1Size.Height; //Get the Height of table cell
Console.WriteLine("rowHeight: {0}",rowHeight);
rowHeight += 60; //Add extra 60 due to label-2, label-3 size and spacing value in cell
Console.WriteLine("After Final Edit rowHeight value: {0}",rowHeight);
return (float)rowHeight;
}
}
我可以获取由于自动布局引起的问题,或者我在代码中的某处犯了错误吗? 请注意,我不想删除项目中的autolayout。 请查看并告知我们您的建议。提前感谢!
答案 0 :(得分:0)
自我调整大小的视图(tableviewcells)可能对您有用。
设置约束,然后设置tableView.estimatedRowHeight = 44.0(例如) 然后设置tableView.rowHeight = UITableViewAutomaticDimension
以下是有关此内容的教程:http://www.appcoda.com/self-sizing-cells/