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;
}