当前位置: 首页 > news >正文

题库网站建设的绩效指标网站开发后端论文

题库网站建设的绩效指标,网站开发后端论文,免费网站建站塔山双喜,在线seo工具文章目录 1.生成二维码图片2.扫描二维码(含上下扫描动画)2.1 记得在info.plist中添加相机权限描述 1.生成二维码图片 import UIKit import CoreImagefunc generateQRCode(from string: String) -> UIImage? {let data string.data(using: String.En…

文章目录

  • 1.生成二维码图片
  • 2.扫描二维码(含上下扫描动画)
    • 2.1 记得在info.plist中添加相机权限描述

1.生成二维码图片

请添加图片描述

import UIKit
import CoreImagefunc 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 = "旧机发送"view.backgroundColor = .whiteaddImageView()}func addImageView() {let imageView = UIImageView()view.addSubview(imageView)imageView.snp.makeConstraints { make inmake.center.equalToSuperview()make.width.height.equalTo(200)}imageView.image = generateQRCode(from: "123")}
}

2.扫描二维码(含上下扫描动画)

请添加图片描述

2.1 记得在info.plist中添加相机权限描述

  • 在使用下面的代码之前,确保你的 Info.plist 文件中已添加了相机权限描述(Camera Usage Description)。
<key>NSCameraUsageDescription</key>
<string>We need access to your camera for QR code scanning.</string>
import AVFoundation
import UIKitclass QRCodeScannerViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {var captureSession: AVCaptureSession!var previewLayer: AVCaptureVideoPreviewLayer!override func viewDidLoad() {super.viewDidLoad()// 设置 AVCaptureSessioncaptureSession = AVCaptureSession()guard let videoCaptureDevice = AVCaptureDevice.default(for: .video) else { return }let videoInput: AVCaptureDeviceInputdo {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}// 设置预览图层previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)previewLayer.frame = view.layer.boundspreviewLayer.videoGravity = .resizeAspectFillview.layer.addSublayer(previewLayer)// 开始扫描captureSession.startRunning()addMaskToScannerView()}var scanningLine: UIView!func addMaskToScannerView() {// 计算正方形的位置,使其位于视图的正中心let squareSize: CGFloat = 300let squareX = (view.bounds.width - squareSize) / 2let squareY = (view.bounds.height - squareSize) / 2// 创建四个半透明的 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))// 设置遮罩的背景颜色[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.cgColorsquareFrame.layer.borderWidth = 3squareFrame.backgroundColor = .clearview.addSubview(squareFrame)// 添加扫描线scanningLine = UIView(frame: CGRect(x: squareX, y: squareY, width: squareSize, height: 2))scanningLine.backgroundColor = UIColor.redview.addSubview(scanningLine)// 扫描线动画let animation = CABasicAnimation(keyPath: "position.y")animation.fromValue = squareYanimation.toValue = squareY + squareSizeanimation.duration = 2animation.repeatCount = .infinityscanningLine.layer.add(animation, forKey: "scanning")}// 当扫描到 QRCode 时,此方法将被调用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}// 其他代码,如视图将要消失时停止扫描等
}
http://www.yayakq.cn/news/757950/

相关文章:

  • 网站域名使用怎么做分录跨境电商网站设计
  • 高职院校优质校建设专栏网站app开发设计
  • 在北京大学生做家教的网站购物网站开发将商品导入数据库
  • 能免费做微信群推广的网站品牌建设 厚植
  • 旅行社网站方案网站建设工作室图片
  • 100种晚上禁用的app大全扬州网站建设网站排名优化
  • 广州网站建设开发设计室内设计用什么软件比较好
  • 旅游网站设计页面制作wordpress页面模板下载
  • 2 如何写一份详细的网站开发方案怎样做好网站推广
  • 青岛外贸网站建设哪家好网站建设公司muyunke
  • 上海做oocl船的公司网站阿里巴巴网站导航栏怎么做
  • 北京免费网站开发维护苏州网站建设报价单
  • 佛山网站设计平台网站建设周记
  • 泰州专一做淘宝网站rtt全民互助平台网站开发
  • 做韩国网站wordpress ip 访问
  • 汉川网站推广服务甘肃省建设厅不动产网站
  • 做网站和做系统有什么区别建立网站英文翻译
  • 北京公司网站优化牛推网络
  • 舒城网站建设网站建设制作及推广
  • 徐汇网站设计网站建设英文怎么写
  • 腾讯云网站备案吗珠海百度关键字优化
  • 新建的wordpress没有注册泉州seo外包
  • 网站域名免费申请怎么利用爬虫技术 提高网站排名
  • wordpress签到打卡插件优化网站标题是什么意思
  • 西安做网站公司玖佰网络推荐一些做电子的网站
  • 中小企业网站设计与开发目的公众号购买
  • 做公益活动的网站各省施工备案网站
  • 佛山网站建设设计公司哪家好生意网官网
  • 做网站需要了解什么广州知名网站建设性价比高
  • 虚拟会员商城网站分销微信公众号用什么开发