設定
CoreImage 包含在 iOS 和 macOS SDK 中。無需額外安裝。
Built-in
import CoreImage // No installation needed — included in iOS & macOS SDK使用 CoreImage 產生 QR碼
使用 Swift 內建 CIQRCodeGenerator 的程式碼範例。
Basic QR Code with CoreImage
import CoreImage
import UIKit
func generateQRCode(from string: String) -> UIImage? {
let data = string.data(using: .ascii)
guard let filter = CIFilter(name: "CIQRCodeGenerator") else { return nil }
filter.setValue(data, forKey: "inputMessage")
filter.setValue("Q", forKey: "inputCorrectionLevel")
guard let ciImage = filter.outputImage else { return nil }
// Scale up for crisp rendering
let transform = CGAffineTransform(scaleX: 10, y: 10)
let scaledImage = ciImage.transformed(by: transform)
return UIImage(ciImage: scaledImage)
}
let qrImage = generateQRCode(from: "https://qrcode.fun")Colored QR Code
func generateColoredQRCode(from string: String,
foreground: UIColor = .black,
background: UIColor = .white) -> UIImage? {
let data = string.data(using: .ascii)
guard let qrFilter = CIFilter(name: "CIQRCodeGenerator"),
let colorFilter = CIFilter(name: "CIFalseColor") else { return nil }
qrFilter.setValue(data, forKey: "inputMessage")
qrFilter.setValue("H", forKey: "inputCorrectionLevel")
colorFilter.setValue(qrFilter.outputImage, forKey: "inputImage")
colorFilter.setValue(CIColor(color: foreground), forKey: "inputColor0")
colorFilter.setValue(CIColor(color: background), forKey: "inputColor1")
guard let output = colorFilter.outputImage else { return nil }
let transform = CGAffineTransform(scaleX: 10, y: 10)
return UIImage(ciImage: output.transformed(by: transform))
}QRCode.fun API
透過 API 在 Swift 中產生 QR碼
使用 URLSession 從 Swift 呼叫 QRCode.fun API,產生帶有自訂顏色和標誌的樣式化 QR碼。
Swift API 整合
import Foundation
func generateQRCodeViaAPI(data: String) async throws -> Data {
let url = URL(string: "https://qrcode.fun/api/generate-qr-styled")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let payload: [String: Any] = [
"data": data,
"width": 300,
"height": 300,
"type": "png",
"margin": 10,
"dotsOptions": ["color": "#1A2B3C", "type": "rounded"],
"cornersSquareOptions": ["color": "#8564C3", "type": "extra-rounded"],
"backgroundOptions": ["color": "#FFFFFF"]
]
request.httpBody = try JSONSerialization.data(withJSONObject: payload)
let (responseData, _) = try await URLSession.shared.data(for: request)
return responseData // Parse JSON to get base64 image
}
// Usage
let imageData = try await generateQRCodeViaAPI(data: "https://qrcode.fun")即時 QR碼預覽
立即嘗試使用 Swift 產生 QR碼。
QR碼預覽
CoreImage vs API
比較直接使用 CoreImage 與 QRCode.fun API。
| 功能 | CoreImage | QRCode.fun API |
|---|---|---|
| 設定複雜度 | 內建,無需安裝 | 透過 URLSession 發送 HTTP 請求 |
| 自訂 | 基礎(透過 CIFilter 著色) | 完整樣式:顏色、形狀、標誌 |
| 離線支援 | 是 | 需要網路 |
| 維護 | iOS/macOS SDK 的一部分 | 始終保持最新 |
| 輸出格式 | CIImage → UIImage/NSImage | PNG, SVG |
Swift QR碼使用情境
Swift 應用中 QR碼的常見情境。
iOS 應用
在 iPhone 和 iPad 應用中產生 QR碼,用於分享連結、聯絡人、Wi-Fi 憑證和應用深層連結。
SwiftUI 視圖
建立可重複使用的 SwiftUI 元件,渲染帶有自訂樣式和動畫的 QR碼。
macOS 應用
建構 macOS 工具,為名片、標籤和文件管理產生 QR碼。
Apple Watch
在 Apple Watch 上顯示 QR碼,快速存取登機證、票券和會員卡。
常見問題
關於使用 Swift 產生 QR碼的常見問題。
不需要。CoreImage 的 CIQRCodeGenerator 濾鏡內建於 iOS 和 macOS 中。無需任何相依性即可產生基本 QR碼。