ios textview height tableview cell

iOS-Celda de vista de tabla con UITextView sin cambiar el tamaño correctamente



height tableview (1)

Resulta que el uso del diseño automático me permitió establecer el espacio superior y el espacio inferior en la supervista (vista de celda), y dado que la altura de la celda se modificó en heightForRowAtIndexPath: la vista de texto se cambia automáticamente de tamaño.

He subclasificado una clase celular y estoy usando prototipos de Storyboard. La celda en cuestión tiene una vista de texto incrustada que mostrará diferentes longitudes de texto. Ya configuré la altura de la celda en heightForRowAtIndexPath:, pero tratando de cambiar el tamaño de la vista de texto en cellForRowAtIndexPath: no funciona correctamente. No cambiará el tamaño de la carga inicial, pero una vez que desplazaré la celda fuera de la vista, volveré a entrar. Pero si sigo desplazándome de un lado a otro, ocasionalmente se reduce de nuevo.

Código:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ int defaultSize = 0; int height = 0; if(indexPath.section%2==0){ defaultSize = 160; NSMutableDictionary *currentPost = [newsFeedPosts objectAtIndex:indexPath.section]; NSString *string = [currentPost valueForKey:@"detailsText"]; CGSize stringSize = [string sizeWithFont:[UIFont boldSystemFontOfSize:15] constrainedToSize:CGSizeMake(320, 9999) lineBreakMode:NSLineBreakByWordWrapping]; height = stringSize.height + defaultSize; NSLog(@"String Size Before: %f",stringSize.height); }else{ defaultSize = 270; height = defaultSize; } return height; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier; if(indexPath.section%2==0){ CellIdentifier = @"NewsFeedText"; }else{ CellIdentifier = @"NewsFeedImage"; } NewsFeedCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // Configure the cell... [cell setBackgroundView:[[NewsFeedCellBackground alloc] init]]; [cell.bottomContainer setClipsToBounds:YES]; [cell.bottomContainer.layer setMasksToBounds:YES]; [cell.imagePreview.imageView setContentMode:UIViewContentModeScaleAspectFit]; [cell.bottomContainer setFrame:CGRectMake(0, cell.contentView.frame.size.height-30, cell.contentView.frame.size.width, 30)]; //Data Object NSMutableDictionary *currentPost = [newsFeedPosts objectAtIndex:indexPath.section]; //View cell.userImage.image = [UIImage imageNamed:[currentPost valueForKey:@"userImage"]]; cell.userName.text = [currentPost valueForKey:@"userName"]; cell.createdDate.text = [currentPost valueForKey:@"createdDate"]; cell.patientName.text = [currentPost valueForKey:@"patientName"]; cell.detailsText.text = [currentPost valueForKey:@"detailsText"]; [cell.imagePreview setImage:[UIImage imageNamed:[currentPost valueForKey:@"imagePreview"]] forState:UIControlStateNormal]; [cell.viewCase addTarget:self action:@selector(displayCase:) forControlEvents:UIControlEventTouchUpInside]; //Image [cell.imagePreview addTarget:self action:@selector(displayImage:) forControlEvents:UIControlEventTouchUpInside]; //Data cell.viewCase.tag = [[currentPost valueForKey:@"caseID"] intValue]; //Cell Adjustments NSString *string = [currentPost valueForKey:@"detailsText"]; CGSize stringSize = [string sizeWithFont:[UIFont boldSystemFontOfSize:15] constrainedToSize:CGSizeMake(320, 9999) lineBreakMode:NSLineBreakByWordWrapping]; NSLog(@"String Size After: %f",stringSize.height); [cell.detailsText setFrame:CGRectMake(cell.detailsText.frame.origin.x, cell.detailsText.frame.origin.y, cell.detailsText.frame.size.width, stringSize.height+10)]; [cell.detailsText setBackgroundColor:[UIColor redColor]]; return cell; }