Swift QR碼函式庫

使用 Swift 產生 QR碼

Swift 透過 CoreImage 的 CIQRCodeGenerator 濾鏡提供內建 QR碼產生功能。iOS 和 macOS 應用無需第三方相依性。

設定

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。

功能CoreImageQRCode.fun API
設定複雜度內建,無需安裝透過 URLSession 發送 HTTP 請求
自訂基礎(透過 CIFilter 著色)完整樣式:顏色、形狀、標誌
離線支援需要網路
維護iOS/macOS SDK 的一部分始終保持最新
輸出格式CIImage → UIImage/NSImagePNG, 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碼。

開始使用 Swift 產生 QR碼

使用我們的免費產生器或將 API 整合到您的 iOS 和 macOS 應用中。