Tengo un montón de imágenes que estoy usando para las vistas de imágenes de la celda, todas no son más grandes que 50x50. por ejemplo, 40x50, 50x32, 20x37 .....
Cuando cargo la vista de tabla, el texto no se alinea porque el ancho de las imágenes varía. También me gustaría que aparecieran imágenes pequeñas en el centro en lugar de en la izquierda.
Aquí está el código que estoy probando dentro de mi método 'cellForRowAtIndexPath'
cell.imageView.autoresizingMask = ( UIViewAutoresizingNone );
cell.imageView.autoresizesSubviews = NO;
cell.imageView.contentMode = UIViewContentModeCenter;
cell.imageView.bounds = CGRectMake(0, 0, 50, 50);
cell.imageView.frame = CGRectMake(0, 0, 50, 50);
cell.imageView.image = [UIImage imageWithData: imageData];
Como puede ver, he probado algunas cosas, pero ninguna funciona.
self.imageView.bounds
la imagen estará centrada.UITableViewCell
?Para aquellos de ustedes que no tienen una subclase de
UITableViewCell
:El código anterior establece el tamaño en 40x40.
Swift 2
O puede usar otro enfoque (no probado) sugerido por @Tommy:
Swift 3+
El código anterior es la versión Swift 3+ del anterior.
fuente
UIScreen.mainScreen.scale
así que simplemente me fuiUIGraphicsBeginImageContext
. También cambió el tamaño de imageView en la celda básica.Así es como lo hice. Esta técnica se encarga de mover el texto y las etiquetas de texto de detalle de forma adecuada a la izquierda:
fuente
vista de imagen agregar como una vista secundaria a la celda de vista de tabla
fuente
No es necesario rehacer la celda completa. Puede usar las propiedades indentationLevel y indentationWidth de tableViewCells para cambiar el contenido de su celda. Luego agrega su imageView personalizado al lado izquierdo de la celda.
fuente
Mejor cree una vista de imagen y agréguela como una vista secundaria a la celda. Entonces puede obtener el tamaño de marco deseado.
fuente
Simplemente rápido ,
Paso 1: cree una subclase del
UITableViewCell
paso 2: agregue este método a la subclase de UITableViewCell
Paso 3: crea un objeto de celda usando esa subclase en
cellForRowAtIndexPath
,Paso 4: disfruta
fuente
fuente
Esto funcionó para mí en rápido:
Cree una subclase de UITableViewCell (asegúrese de vincular su celda en el guión gráfico)
En cellForRowAtIndexPath, retire la celda como su nuevo tipo de celda:
Obviamente, cambie los valores numéricos para adaptarlos a su diseño
fuente
Creé una extensión usando la respuesta de @GermanAttanasio. Proporciona un método para cambiar el tamaño de una imagen a un tamaño deseado y otro método para hacer lo mismo mientras se agrega un margen transparente a la imagen (esto puede ser útil para las vistas de tabla en las que desea que la imagen también tenga un margen).
fuente
Aquí está el método de trabajo de @germanattanasio, escrito para Swift 3
fuente
Si lo usa
cell.imageView?.translatesAutoresizingMaskIntoConstraints = false
, puede establecer restricciones en imageView. Aquí hay un ejemplo de trabajo que usé en un proyecto. Evité las subclases y no necesité crear un guión gráfico con celdas prototipo, pero me tomó bastante tiempo ponerme en funcionamiento, por lo que probablemente sea mejor usarlo solo si no hay una forma más simple o concisa disponible para usted.fuente
El UITableViewCell normal funciona bien para colocar las cosas, pero el cell.imageView no parece comportarse como usted quiere. Descubrí que es lo suficientemente simple como para que UITableViewCell se distribuya correctamente dando primero a cell.imageView una imagen de tamaño adecuado como
Entonces puede conectar su propio UIImageView que funcione correctamente con
Configure la imagen en unImageView y hará lo que espera que haga un UIImageView. Sea del tamaño que quieras sin importar la imagen que le des. Esto debería ir en tableView: cellForRowAtIndexPath:
fuente
Básicamente, esta solución dibuja la imagen como "ajuste de aspecto" dentro del rect dado.
fuente
Yo tuve el mismo problema. Gracias a todos los que respondieron: pude encontrar una solución usando partes de varias de estas respuestas.
Mi solución es usar swift 5
El problema que estamos tratando de resolver es que podemos tener imágenes con diferentes relaciones de aspecto en nuestro
TableViewCell
s, pero queremos que se rendericen con anchos consistentes. Las imágenes deben, por supuesto, renderizarse sin distorsión y llenar todo el espacio. En mi caso, estaba bien con algunos "recortes" de imágenes altas y delgadas, así que usé el modo de contenido.scaleAspectFill
Para hacer esto, creé una subclase personalizada de
UITableViewCell
. En mi caso, lo nombréStoryTableViewCell
. Toda la clase se pega a continuación, con comentarios en línea.Este enfoque funcionó para mí cuando también utilicé una Vista de accesorios personalizada y etiquetas de texto largas. Aquí hay una imagen del resultado final:
Vista de tabla renderizada con ancho de imagen consistente
fuente
La solución que obtuvimos es similar a muchas de las otras. Pero para obtener la posición correcta del separador, tuvimos que configurarlo antes de llamar
super.layoutSubviews()
. Ejemplo simplificado:fuente