gpt4 book ai didi

iphone - 根据 UILabel 大小展开 UITableViewCell

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:19 25 4
gpt4 key购买 nike

我有一个 UITableView 有 4 个 UILabel 的:标题、正文、作者和日期,他看起来像这样:

cell55

我想要完成的是,当用户点击单元格本身时,应该向单元格添加另一个标签,“Body”标签,单元格应该根据这个标签大小展开。

像这样:

cellblsize

我该怎么做?我搜索了 stackoverflow,尝试了一些代码片段,但仍然没有找到正确的解决方案。

谢谢!

编辑 1:14.11.12 14:52

我设法用当前文本更改了 UILabel 的大小:

- (CGRect )resizeLabelByFontSize:(UILabel *)customCellLabel withMaxHeightSize:(CGFloat )maxHeight
{
CGSize maximumLabelSize = CGSizeMake(239, maxHeight);

CGSize expectedLabelSize = [customCellLabel.text sizeWithFont:customCellLabel.font constrainedToSize:maximumLabelSize lineBreakMode:customCellLabel.lineBreakMode];

//adjust the label the the new height.
CGRect newFrame = customCellLabel.frame;
newFrame.size.height = expectedLabelSize.height;

return newFrame;
}

但是如何根据新 UILabel 的大小更改单元格的大小?

最佳答案

通过查看问题中的图像

这是为 UILabel 创建动态框架的方法看看这个通过获取 UIlabel 的高度和宽度,您可以计算整个高度并可以设置 UITableView 的行高。

- (void)setLabeltextWithVerticalAlignTop:(NSString *)theText
{
CGSize labelSize;
// here labelSize is hard-wired but could use constants to populate the size

labelSize = CGSizeMake(210, 129);//this is just for example
//now create the Size from textString SO that We could assign this size to the Label.

CGSize theStringSize = [theText sizeWithFont:lblTitle.font constrainedToSize:labelSize lineBreakMode:lblTitle.lineBreakMode];
lblTitle.frame = CGRectMake(lblTitle.frame.origin.x, lblTitle.frame.origin.y, theStringSize.width, theStringSize.height);
lblTitle.text = theText;

}

调用上面的方法为了设置描述标签的高度和宽度,您需要传递要显示在该描述标签上的文本。当您获得该标签的高度时,现在您可以在此基础上调整 TableView 行的高度。

编辑:上面的代码只是为 UILabel 创建动态框架

You should take a view of this这就是您要查找的内容......!!!。您也可以在这里找到示例代码。

编辑:当您编辑您的问题时,看到的只是您需要将其转换为可运行代码的逻辑。

在您的代码中使用下面的方法为每一行调用,并在其中进行一些计算。

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat rowHeight=0.0;
//here it seems cell have 4 subview added on it.
//so if you could calculate the totla hieht of them.

//so what you really need to do.you just use hieght calculative Method for getting hieght of each of three UILabel
//you need to modify `setLabeltextWithVerticalAlignTop` method .
rowHeight= [self setLabeltextWithVerticalAlignTop:@"pass the correspondingText"];// suppose it returns some hieght for FisrtLabel.

//suppoose here you get the 20.0 height here

rowHeight= rowHeight+[self setLabeltextWithVerticalAlignTop:@"pass the correspondingText"];

//假设它为 secondUIlabel 返回一些高度。

//suppoose here you get the 40.0 height here

rowHeight= rowHeight+ [self setLabeltextWithVerticalAlignTop:@"pass the correspondingText"];

// suppose it returns some hieght for ThirdUIlabel.
// suppoose here you get the 15.0 height here
//here you have totla height you just need to add some gapping floating value for all of three UIlabel.so that the could not overlap like as.

rowHeight= rowHeight+20.0;

//now you can return that total height
return rowHeight;
}

注意:这只是您需要将其转换为可运行代码的逻辑。我相信这会有所帮助。

希望对您有所帮助。

关于iphone - 根据 UILabel 大小展开 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378060/

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