gpt4 book ai didi

iphone - UITableViewCell 文本很长

转载 作者:行者123 更新时间:2023-12-03 21:18:16 26 4
gpt4 key购买 nike

我想使用 UITableView 创建应用程序的博客部分。该表应有两个部分和分组样式。第一部分是博客,第二部分是表格,评论。博客可以是任意大小。当输入大量文本时,我的意思是 10K 字或更多,带有链接或/和照片,应用程序崩溃或根本不显示文本。评论还可以包含大量文本以及链接和照片。看来 UITableView 有其局限性。这些是我面临的问题:

  1. 内存
  2. 并不总是显示所有文本(如果太长)
  3. 滚动滞后

关于如何实现这一目标有什么想法吗?我是否应该尝试使用 UITextViews 创建自己的表格来尝试模仿 UITableView 的行为?有没有一种简单的方法可以用Apple的UITableView来实现它?我还没有看到有一个应用程序可以做到这一点。有什么代码可以帮助我开始吗?我还必须使用 NSAttributedString 进行文本格式化。

更新:阅读 tableView:heightForRowAtIndexPath: 的文档发现了一个重要的注释,它回答了问题,但不是我的问题。

Important: Due to an underlying implementation detail, you should not return values greater than 2009.

最佳答案

您需要根据文本动态调整表格 View 单元格高度。之后,您需要创建一个具有取决于文本的动态高度的标签,并将该标签添加到单元格中。

对于内存管理,您需要确保您的单元格是自动释放的,并且您在单元格中添加的 subview 也会被释放。

这里有一些代码可以帮助您显示整个文本,而无需滚动。

假设 blogArray 是包含您要在单元格中显示的文本的数组。(替换为您自己的)。

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

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
if([self.blogArray count]>0)
{
CGSize labelsize;
UILabel *blogTextLabel = [[UILabel alloc] init];;
[blogTextLabel setNumberOfLines:0];
[blogTextLabel setBackgroundColor:[UIColor clearColor]];
NSString *text=[self.blogArray objectAtIndex:indexPath.row];
[blogTextLabel setFont:[UIFont fontWithName:@"Helvetica"size:14]];
labelsize=[text sizeWithFont: blogTextLabel.font constrainedToSize:CGSizeMake(268, 2000.0) lineBreakMode:UILineBreakModeWordWrap];
blogTextLabel.frame=CGRectMake(10, 24, 268, labelsize.height);
blogTextLabel.text=text;
[cell.contentView addSubview: blogTextLabel];
[blogTextLabel release];


}
else {
}

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

return cell;
}

您还需要调整表格 View 单元格高度:-

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

{
CGSize labelsize;
UILabel * textDesc1 = [[UILabel alloc] init];
[textDesc1 setNumberOfLines:0];
textDesc1.text=[self.blogArray objectAtIndex:indexPath.row];
[textDesc1 setFont:[UIFont fontWithName:@"Helvetica" size:14.0]];
labelsize=[textDesc1.text sizeWithFont:textDesc1.font constrainedToSize:CGSizeMake(268, 2000.0) lineBreakMode:UILineBreakModeWordWrap];
labelsize.height=labelsize.height+35;
[textDesc1 release];
return (CGFloat)labelsize.height;


}

关于iphone - UITableViewCell 文本很长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8236235/

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