Trabalhando com imagens em Swift (iOS/macOS): guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com imagens em Swift (iOS/macOS)

Neste artigo, abordaremos detalhadamente o trabalho com imagens em Swift para as plataformas iOS e macOS. Você aprenderá a carregar, exibir, processar e salvar imagens usando os frameworks nativos da Apple: UIKit (iOS), AppKit (macOS) e Core Image. O material será útil tanto para iniciantes quanto para desenvolvedores experientes.



Principais frameworks para trabalhar com imagens

No ecossistema Apple, existem várias maneiras de trabalhar com imagens. As principais são:

  • UIKit (iOS/tvOS) — UIImage, UIImageView
  • AppKit (macOS) — NSImage, NSImageView
  • Core Image — um poderoso framework para processamento de imagens (filtros, transformações)
  • SwiftUI — Image para exibição declarativa


Carregando imagens no iOS (UIKit)

A maneira mais simples de carregar uma imagem no iOS é usar UIImage. Exemplo de carregamento de assets e de arquivo:

// Carregamento de Assets.xcassetslet imageFromAssets = UIImage(named: "myImage")

// Carregamento de arquivo no Bundleif let path = Bundle.main.path(forResource: "photo", ofType: "jpg") { let imageFromFile = UIImage(contentsOfFile: path)}

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


Exibindo imagens no UIKit

Para exibir uma imagem, usa-se UIImageView:

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


Trabalhando com imagens no macOS (AppKit)

No macOS, usa-se NSImage e NSImageView:

// Carregamento de imagemlet nsImage = NSImage(named: "macImage")

// Exibiçãolet imageView = NSImageView(frame: NSRect(x: 0, y: 0, width: 300, height: 200))imageView.image = nsImageimageView.imageScaling = .scaleProportionallyUpOrDownview.addSubview(imageView)


Processamento de imagens com Core Image

Core Image oferece dezenas de filtros integrados. Vamos ver operações básicas:

import CoreImage

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

// Aplicando o filtro "Desfoque Gaussiano"let filter = CIFilter(name: "CIGaussianBlur")filter?.setValue(ciImage, forKey: kCIInputImageKey)filter?.setValue(10.0, forKey: kCIInputRadiusKey)

// Obtendo o resultadoguard let outputImage = filter?.outputImage else { return }

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


Filtros populares do Core Image

  • CISepiaTone — sépia
  • CIPhotoEffectMono — efeito preto e branco
  • CIVignette — vinheta
  • CIColorControls — brilho, contraste, saturação
  • CICrop — corte de imagem


Trabalhando com imagens no SwiftUI

SwiftUI oferece uma maneira simples e declarativa de trabalhar com imagens:

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