如何在没有滚动的情况下根据文本长度动态更改textview高度和单元格高度

这是我的代码,显示表中的数据,我的完整数据没有显示在单元格中。 第一个图像是当我设置可滚动到no时,第二个图像,当我没有设置scrollable.i我是一个beginner.plz帮我解决这个问题。

在此处输入图像描述 在此处输入图像描述

- (void)textViewDidChange:(UITextView *)textView{ [table beginUpdates]; [table endUpdates]; } -(void)createdatabase{ BOOL success; NSFileManager *filemanager = [NSFileManager defaultManager]; success = [filemanager fileExistsAtPath:datapath]; if (success)return; NSString *databasefromapp = [[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:dataname]; [filemanager copyItemAtPath:databasefromapp toPath:datapath error:nil]; } -(void)getdatabase{ eventitleary = [[NSMutableArray alloc]init]; eventdescary = [[NSMutableArray alloc]init]; eventimgary = [[NSMutableArray alloc] init]; sqlite3 *dataname1; if (sqlite3_open([datapath UTF8String],&dataname1) == SQLITE_OK) { const char *sqlStatement; sqlStatement = "SELECT * FROM photography_events"; sqlite3_stmt *compiledStatement; if(sqlite3_prepare_v2(dataname1, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { // Loop through the results and add them to the feeds array while(sqlite3_step(compiledStatement) == SQLITE_ROW) { // Read the data from the result row NSString *str_title = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; [eventitleary addObject:str_title]; NSString *str_desc = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)]; [eventdescary addObject:str_desc]; NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, 2) length:sqlite3_column_bytes(compiledStatement, 2)]; [eventimgary addObject:data]; } } } NSLog(@"%@", eventitleary); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return eventitleary.count; } -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSString *cellidenti = @"CellIdenti"; TableViewCell2 *cell = (TableViewCell2*)[tableView dequeueReusableCellWithIdentifier:cellidenti]; if (cell == nil) { NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"TableViewCell2" owner:self options:nil]; cell = [nib objectAtIndex:0]; } cell.eventitlelbl.text = [eventitleary objectAtIndex:indexPath.row]; cell.eventdesc.text = [eventdescary objectAtIndex:indexPath.row]; cell.eventdesc.editable = NO; //cell.eventdesc.scrollEnabled = NO; [cell.eventdesc sizeToFit]; frame = cell.eventdesc.frame; frame.size = cell.eventdesc.contentSize; cell.eventdesc.frame = frame; NSData *dataimg = (NSData*)[eventimgary objectAtIndex:indexPath.row]; cell.eventimg.image = [UIImage imageWithData:dataimg]; return cell; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ // Return the height with a bit of additional padding space return frame.size.height + 300; } 

您可以通过自适应布局实现此目的。 如果您正在使用autolayout,请查看这个很棒的教程 。 另外,您可以通过计算文本适合的高度来设置动态tableView单元格高度。

您可以使用以下方法计算文本的高度。 传递textview,textview所需的字体和宽度。

 -(CGFloat)heightForText:(NSString*)text withFont:(UIFont *)font andWidth:(CGFloat)width { CGSize constrainedSize = CGSizeMake(width, MAXFLOAT); NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName,nil]; NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:text attributes:attributesDictionary]; CGRect requiredHeight = [string boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin context:nil]; if (requiredHeight.size.width > width) { requiredHeight = CGRectMake(0,0,width, requiredHeight.size.height); } return requiredHeight.size.height; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return [self heightForText:@"your text view text for this row" withFont:[UIFont fontWithName:@"Helvetica" size:16] andWidth:320]; } 

我刚刚得到它,我想动态地做而不是使用自动布局,这是我的代码。希望将来可以解决任何问题。 在此处输入图像描述