Cómo configurar la altura UITableViewCell según el tamaño de la pantalla

Descargo datos de la web, consta de text e image. Estoy poniendo estos datos en UITableView, y quiero que la image sea un trasbackground de UITableViewCell. Todas las imágenes tienen la misma resolución 620×350.

Todos los iPhones tienen diferentes tamaños de pantalla, así que necesito escalar el ancho y alto de la image según el tamaño de la pantalla, y también hago esto para UITableViewCell.

¿Cuáles son las mejores soluciones?

Gracias.

Simplemente use - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ CGFloat aspectRatio = 350.0f/620.0f; return aspectRatio * [UIScreen mainScreen].bounds.size.width;// assuming that the image will stretch across the width of the screen } 

La MEJOR y limpia solución, simplemente está jugando con la altura de la celda , permitiendo que la image se networkingimensione automáticamente mediante Autolayout .

Es fácil:

  1. En su celda, agregue un UIImageView y configure el tamaño que desea tener cuando la celda tenga la altura real;

  2. Establecer como restricciones de este UIImageView , al less superior, inferior y uno del borde lateral (derecho o izquierdo) ; establezca también las restricciones para mantener la proporción ancho / alto ;

En este punto, cuando la célula crece, la image crece en altura , y para mantener la proporción (restricción de gracias) también se cambia el tamaño del ancho , teniendo SIEMPRE el tamaño correcto y proporcionado.

Ahora, por lo tanto, solo tiene que escribir el código para la altura de la celda:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ static CGFloat cellDefaultHeight = /*the default height of the cell*/; static CGFloat screenDefaultHeight = /*the default height of the screen ie 480 in iPhone 4*/; CGFloat factor = cellDefaultHeight/screenDefaultHeight return factor * [UIScreen mainScreen].bounds.size.height; } 

Obviamente, establezca UIImageView de AspectFill en AspectFill .

Puede usar el -tableView:heightForRowAtIndexPath: en HTTableViewDelegate para devolver la altura de cada celda. En su caso, querrá algo como esto:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return [UIScreen mainScreen].bounds.size.height; }