¿Cómo podemos hacer que estas imágenes sean más redondas?
Umair Afzal
¿Por qué no podemos regresar image? ¿Por qué necesitas hacer esto? self.init(cgImage: cgImage)
Andrey Gagan
@AndreyGagan AFAIK, no puedes "reemplazarte" a ti mismo con el recién creado UIImageen un constructor, pero puedes encadenarlo a través del UIImage.init(cgImage: )constructor.
Alnitak
2
La imagen no se crea con la escala adecuada. Por ejemplo, cuando el tamaño es 1x1, se devuelve una imagen 2x2 cuando la escala de la pantalla principal es 2.0. Deberías llamarself.init(cgImage: cgImage, scale: image!.scale, orientation: image!.imageOrientation)
Marián Černý
92
Aquí hay otra opción. Creo que querías un objeto UIImage exacto.
Esto probablemente se consigue que quería OP pero vale la pena nada que no tenían un método para crear una UIImage, no para establecer una UIImageView.
ttarik
Su segundo método todavía crea una vista de imagen, no una imagen, que es lo que @ ev0lution estaba señalando.
rdelmar
editar 3 adjuntos. Ahora tenemos muchas maneras. El último con un UIImageView.
Steve Rosenberg
1
El método getImageWithColor(color: UIColor, size: CGSize) -> UIImagees suficiente como respuesta, ya que creo que no todos usarán esto junto con un UIImageView
Henry Pham
¿Cómo podemos hacer que estas imágenes sean más redondas?
Umair Afzal
9
Un pequeño ajuste a la excelente respuesta de @neoneye, que permite que el código de llamada no necesite crear el CGSize, y modificó el nombre para que no choque con muchos otros:
Creo que algunas respuestas aquí son un poco engañosas. La mayoría de las veces deberá especificar el tamaño de la imagen, no un caso específico (como 1x1). Pero este es un buen enfoque.
Henry Pham el
4
Versión Swift 3 de @anthonyliao Respuesta aceptada:
UIImage
no tiene un-initWithSize:andColor:
método, peroNSImage
sí en OS X. ¿Está utilizando una biblioteca o categoría personalizada para esto?Respuestas:
Otra buena solución, compatible con Swift 2.2 , es crear otro constructor en UIImage, de esta manera:
De esta manera, puede crear la imagen en color personalizada de esta manera:
O, opcionalmente, cree la imagen con un tamaño personalizado:
Swift 3.0
fuente
UIGraphicsBeginImageContextWithOptions(rect.size, true, 1.0)
ref: developer.apple.com/library/ios/documentation/UIKit/Reference/…image
? ¿Por qué necesitas hacer esto?self.init(cgImage: cgImage)
UIImage
en un constructor, pero puedes encadenarlo a través delUIImage.init(cgImage: )
constructor.self.init(cgImage: cgImage, scale: image!.scale, orientation: image!.imageOrientation)
Aquí hay otra opción. Creo que querías un objeto UIImage exacto.
Pegue esto en su código Swift y llámelo
Swift 3.1:
fuente
UIRectMake(0, 0, size.width, size.height)
, esto parece ser la correcta:CGRectMake(0, 0, size.width, size.height)
.let
lugar devar
variables inmutables; aquí parece querect
niimage
debería usarvar
declaración.Versión Swift 4:
Uso:
fuente
Un enfoque más limpio sería encapsular la lógica dentro de una
UIImage
extensión:Ahora el consumidor puede llamar
UIImage.imageWithColor(UIColor.blackColor())
para crear una imagen con fondo negro.fuente
Método similar si desea dibujar la imagen usted mismo versus conectar uno a través de IBOutlet.
Tercer método tomado de anthonyliao. Un poco más complicado:
fuente
UIImage
, no para establecer unaUIImageView
.getImageWithColor(color: UIColor, size: CGSize) -> UIImage
es suficiente como respuesta, ya que creo que no todos usarán esto junto con un UIImageViewUn pequeño ajuste a la excelente respuesta de @neoneye, que permite que el código de llamada no necesite crear el CGSize, y modificó el nombre para que no choque con muchos otros:
Swift 4
fuente
Puede usar la nueva API iOS 10 UIGraphicsImageRenderer .
Aquí hay una extensión en UIColor en Swift 3.1
fuente
Una buena manera es tener una propiedad calculada como esta:
Uso:
fuente
Versión Swift 3 de @anthonyliao Respuesta aceptada:
fuente
Rect con esquinas redondeadas
}
fuente