国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

iOS swift5 掃描二維碼

這篇具有很好參考價值的文章主要介紹了iOS swift5 掃描二維碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.生成二維碼圖片

import UIKit
import CoreImage

func generateQRCode(from string: String) -> UIImage? {
     let data = string.data(using: String.Encoding.utf8)
    
    if let filter = CIFilter(name: "CIQRCodeGenerator") {
        filter.setValue(data, forKey: "inputMessage")
        let transform = CGAffineTransform(scaleX: 3, y: 3)
        
        if let output = filter.outputImage?.transformed(by: transform) {
            return UIImage(ciImage: output)
        }
    }
    
    return nil
}

class SendVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        title = "舊機(jī)發(fā)送"
        view.backgroundColor = .white
        
        addImageView()
    }
    
    func addImageView() {
        let imageView = UIImageView()
        view.addSubview(imageView)
        imageView.snp.makeConstraints { make in
            make.center.equalToSuperview()
            make.width.height.equalTo(200)
        }
        
        imageView.image = generateQRCode(from: "123")
    }
}

2.掃描二維碼(含上下掃描動畫)

iOS swift5 掃描二維碼,ios,swift,xcode文章來源地址http://www.zghlxwxcb.cn/news/detail-676582.html

2.1 記得在info.plist中添加相機(jī)權(quán)限描述

  • 在使用下面的代碼之前,確保你的 Info.plist 文件中已添加了相機(jī)權(quán)限描述(Camera Usage Description)。
<key>NSCameraUsageDescription</key>
<string>We need access to your camera for QR code scanning.</string>
import AVFoundation
import UIKit



class QRCodeScannerViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {
    
    var captureSession: AVCaptureSession!
    var previewLayer: AVCaptureVideoPreviewLayer!
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 設(shè)置 AVCaptureSession
        captureSession = AVCaptureSession()
        
        guard let videoCaptureDevice = AVCaptureDevice.default(for: .video) else { return }
        let videoInput: AVCaptureDeviceInput
        
        do {
            videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice)
        } catch {
            return
        }
        
        if captureSession.canAddInput(videoInput) {
            captureSession.addInput(videoInput)
        } else {
            return
        }
        
        let metadataOutput = AVCaptureMetadataOutput()
        
        if captureSession.canAddOutput(metadataOutput) {
            captureSession.addOutput(metadataOutput)
            
            metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
            metadataOutput.metadataObjectTypes = [.qr]
        } else {
            return
        }
        
        // 設(shè)置預(yù)覽圖層
        previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
        previewLayer.frame = view.layer.bounds
        previewLayer.videoGravity = .resizeAspectFill
        view.layer.addSublayer(previewLayer)
        
        // 開始掃描
        captureSession.startRunning()
        
        addMaskToScannerView()
    }
    
    var scanningLine: UIView!
    func addMaskToScannerView() {
        // 計算正方形的位置,使其位于視圖的正中心
        let squareSize: CGFloat = 300
        let squareX = (view.bounds.width - squareSize) / 2
        let squareY = (view.bounds.height - squareSize) / 2

        // 創(chuàng)建四個半透明的 UIView 元素作為遮罩
        let topMask = UIView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: squareY))
        let bottomMask = UIView(frame: CGRect(x: 0, y: squareY + squareSize, width: view.bounds.width, height: view.bounds.height - (squareY + squareSize)))
        let leftMask = UIView(frame: CGRect(x: 0, y: squareY, width: squareX, height: squareSize))
        let rightMask = UIView(frame: CGRect(x: squareX + squareSize, y: squareY, width: view.bounds.width - (squareX + squareSize), height: squareSize))

        // 設(shè)置遮罩的背景顏色
        [topMask, bottomMask, leftMask, rightMask].forEach {
            $0.backgroundColor = UIColor.black.withAlphaComponent(0.6)
            view.addSubview($0)
        }

        // 添加綠色的正方形框
        let squareFrame = UIView(frame: CGRect(x: squareX, y: squareY, width: squareSize, height: squareSize))
        squareFrame.layer.borderColor = UIColor.green.cgColor
        squareFrame.layer.borderWidth = 3
        squareFrame.backgroundColor = .clear
        view.addSubview(squareFrame)
        
        // 添加掃描線
        scanningLine = UIView(frame: CGRect(x: squareX, y: squareY, width: squareSize, height: 2))
        scanningLine.backgroundColor = UIColor.red
        view.addSubview(scanningLine)

        // 掃描線動畫
        let animation = CABasicAnimation(keyPath: "position.y")
        animation.fromValue = squareY
        animation.toValue = squareY + squareSize
        animation.duration = 2
        animation.repeatCount = .infinity
        scanningLine.layer.add(animation, forKey: "scanning")
    }

    
    // 當(dāng)掃描到 QRCode 時,此方法將被調(diào)用
    func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
        captureSession.stopRunning()
        
        if let metadataObject = metadataObjects.first {
            guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else { return }
            guard let stringValue = readableObject.stringValue else { return }
            
            AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
            found(code: stringValue)
        }
        
        dismiss(animated: true)
    }
    
    func found(code: String) {
        print("QRCode: \(code)")
        // 在此處處理掃描到的 QRCode
    }
    
    // 其他代碼,如視圖將要消失時停止掃描等
}

到了這里,關(guān)于iOS swift5 掃描二維碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Android】實現(xiàn)生成二維碼、條形碼和掃描二維碼的功能

    【Android】實現(xiàn)生成二維碼、條形碼和掃描二維碼的功能

    目錄 一、添加依賴 二、布局文件 三、實現(xiàn)生成二維碼的功能 四、效果圖 要先添加一個第三方庫來實現(xiàn)二維碼的生成以及掃描二維碼的功能,開源庫如下: 在build.grade(Moudle)中添加依賴: 效果如下: activity_main.xml: MainActivity.java: 簡單粗暴! 感謝?(°?‵?′??)?。?!

    2024年02月11日
    瀏覽(18)
  • iOS swift5 彈出提示文字(停留1~2s)XHToastSwift

    CoderZhuXH/XHToastSwift - github

    2024年02月10日
    瀏覽(18)
  • flutter掃描二維碼,全套學(xué)習(xí)

    flutter掃描二維碼,全套學(xué)習(xí)

    1.你所知道的設(shè)計模式有哪些? 參考回答 創(chuàng)建型模式,共五種 :工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。 結(jié)構(gòu)型模式,共七種 :適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。 行為型模式,共十一種 :策略模

    2024年03月28日
    瀏覽(18)
  • ios開發(fā) swift5 蘋果系統(tǒng)自帶的圖標(biāo) SF Symbols

    ios開發(fā) swift5 蘋果系統(tǒng)自帶的圖標(biāo) SF Symbols

    蘋果官網(wǎng)網(wǎng)址:SF Symbols 通過上面的網(wǎng)址可以下載dmg, 安裝到自己的mac上 貌似下面這樣不能展示出動畫,還是要使用動畫的代碼 UIKit swiftUI

    2024年02月11日
    瀏覽(16)
  • ios開發(fā) swift5 蘋果手機(jī)怎樣獲取藍(lán)牙設(shè)備的mac地址

    ios開發(fā) swift5 蘋果手機(jī)怎樣獲取藍(lán)牙設(shè)備的mac地址

    如設(shè)備藍(lán)牙名為: 藍(lán)牙名_mac app這邊展示藍(lán)牙名的時候,就只展示 藍(lán)牙名 , 去掉后面的 _mac 其他用到藍(lán)牙名的地方,都用這樣的方式處理 如下圖,箭頭部分就是廣播出的mac地址 如果不是通過搜索獲取到peripheral,而是通過retrievePeripherals方法獲取到peripheral。這個時候就只能獲

    2024年02月03日
    瀏覽(17)
  • vue頁面動態(tài)生成二維碼,掃描二維碼跳轉(zhuǎn)到微信小程序,同時傳遞參數(shù)

    vue頁面動態(tài)生成二維碼,掃描二維碼跳轉(zhuǎn)到微信小程序,同時傳遞參數(shù)

    最近領(lǐng)導(dǎo)提了個新的需求, 點擊表格時,彈出一個二維碼,微信掃描此二維碼時,跳轉(zhuǎn)到微信小程序,同時將所在行的id(即員工所在公司的id)傳過去,這樣員工在登錄微信小程序時,根據(jù)此id就知道是哪個公司的員工登錄或者注冊 了! 剛開始想的是,直接把小程序的二維

    2024年02月11日
    瀏覽(101)
  • 微信掃描普通二維碼進(jìn)入小程序

    微信掃描普通二維碼進(jìn)入小程序

    微信掃描普通二維碼進(jìn)入小程序的方法,和代碼沒有什么關(guān)系,主要是在 小程序平臺 進(jìn)行設(shè)置 1. 開發(fā)配置 開發(fā) —— 開發(fā)管理 —— 開發(fā)設(shè)置 —— 掃普通鏈接二維碼打開小程序 2. 配置規(guī)則 根據(jù)說明配置內(nèi)容就行,后面有說帶參數(shù)的配置和怎么在小程序里面獲取參數(shù) 帶參數(shù)

    2024年02月11日
    瀏覽(99)
  • 【MAUI】條形碼,二維碼掃描功能

    本系列文章面向移動開發(fā)小白,從零開始進(jìn)行平臺相關(guān)功能開發(fā),演示如何參考平臺的官方文檔使用MAUI技術(shù)來開發(fā)相應(yīng)功能。 移動端的掃描條形碼、二維碼的功能已經(jīng)隨處可見,已經(jīng)很難找到一個不支持掃描的App了,但是微軟的MAUI竟然沒有提供,那么我們應(yīng)該如何實現(xiàn)呢?

    2024年02月04日
    瀏覽(34)
  • 基于java服務(wù)端實現(xiàn)二維碼掃描

    在Java中,可以使用第三方庫來識別二維碼內(nèi)容。一個常用的庫是ZXing(Zebra Crossing),它提供了強大的二維碼處理功能。 首先,確保已將ZXing庫添加到項目中。可以手動下載ZXing JAR文件,也可以使用構(gòu)建工具(如Maven或Gradle)來管理依賴。 下面是使用ZXing庫識別二維碼內(nèi)容的示

    2024年02月08日
    瀏覽(18)
  • 掃描二維碼進(jìn)小程序指定頁面

    掃描二維碼進(jìn)小程序指定頁面

    1.在開發(fā)小程序時,有時會有 掃描二維碼進(jìn)入小程序的指定頁面 的業(yè)務(wù)需求。 2.微信小程序提供了這種功能,具體實現(xiàn)可以分兩步 (1) 后臺配置 (2) 代碼中獲取跳轉(zhuǎn)信息 1.首先需要在 小程序后臺 - 開發(fā)管理 - 開發(fā)設(shè)置 下的 掃描二維碼進(jìn)小程序模塊 下 配置二維碼規(guī)則

    2023年04月09日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包