Trabajo con imágenes en Swift (iOS/macOS): guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con imágenes en Swift (iOS/macOS)

En este artículo, analizaremos en detalle el trabajo con imágenes en Swift para las plataformas iOS y macOS. Aprenderá a cargar, mostrar, procesar y guardar imágenes utilizando los frameworks integrados de Apple: UIKit (iOS), AppKit (macOS) y Core Image. El material será útil tanto para principiantes como para desarrolladores experimentados.



Frameworks principales para trabajar con imágenes

En el ecosistema de Apple, existen varias formas de trabajar con imágenes. Las principales son:

  • UIKit (iOS/tvOS) — UIImage, UIImageView
  • AppKit (macOS) — NSImage, NSImageView
  • Core Image — un potente framework para el procesamiento de imágenes (filtros, transformaciones)
  • SwiftUI — Image para visualización declarativa


Carga de imágenes en iOS (UIKit)

La forma más sencilla de cargar una imagen en iOS es usar UIImage. Ejemplo de carga desde assets y desde archivo:

// Carga desde Assets.xcassetslet imageFromAssets = UIImage(named: "myImage")

// Carga desde un archivo en Bundleif let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = UIImage(contentsOfFile: path)}

// Carga desde Dataif let data = try? Data(contentsOf: URL(string: "https://example.com/image.png")!) { let imageFromData = UIImage(data: data)}


Visualización de imágenes en UIKit

Para mostrar una imagen se utiliza UIImageView:

let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))imageView.image = UIImage(named: "example")imageView.contentMode = .scaleAspectFitview.addSubview(imageView)


Trabajo con imágenes en macOS (AppKit)

En macOS se utilizan NSImage y NSImageView:

// Carga de imagenlet nsImage = NSImage(named: "macImage")

// Visualizaciónlet imageView = NSImageView(frame: NSRect(x: 0, y: 0, width: 300, height: 200))imageView.image = nsImageimageView.imageScaling = .scaleProportionallyUpOrDownview.addSubview(imageView)


Procesamiento de imágenes con Core Image

Core Image proporciona decenas de filtros integrados. Veamos las operaciones básicas:

import CoreImage

// Creamos un CIImage a partir de UIImageguard let uiImage = UIImage(named: "input"), let ciImage = CIImage(image: uiImage) else { return }

// Aplicamos el filtro "Desenfoque Gaussiano"let filter = CIFilter(name: "CIGaussianBlur")filter?.setValue(ciImage, forKey: kCIInputImageKey)filter?.setValue(10.0, forKey: kCIInputRadiusKey)

// Obtenemos el resultadoguard let outputImage = filter?.outputImage else { return }

// Convertimos de vuelta a UIImagelet context = CIContext(options: nil)if let cgImage = context.createCGImage(outputImage, from: outputImage.extent) { let blurredImage = UIImage(cgImage: cgImage)}


Filtros populares de Core Image

  • CISepiaTone — sepia
  • CIPhotoEffectMono — efecto blanco y negro
  • CIVignette — viñeteado
  • CIColorControls — brillo, contraste, saturación
  • CICrop — recorte de imagen


Trabajo con imágenes en SwiftUI

SwiftUI proporciona una forma simple y declarativa de trabajar con imágenes:

import SwiftUI

struct ContentView: View { var body: some View { Image("swiftui_image") .resizable() .scaledToFit() .frame(width: 200, height: 200) .clipShape(Circle()) .overlay(Circle().stroke(Color.blue, lineWidth: 4)) .shadow(radius: 10) }}

Recommendations