Swift - Visionkit Как редактировать цвет кнопок «Продолжить сканирование» и «Повторить попытку» - PullRequest
1 голос
/ 11 июля 2020

У меня проблема. Я реализовал фреймворк Visionkit, чтобы обнаруживать текст при использовании камеры. Проблема в том, что цвета кнопок: «Продолжить сканирование» и «Повторить попытку» синие. Я хочу их черного цвета. Как я могу исправить эту проблему? Я вставляю свой код. Заранее спасибо!

import UIKit
import Vision
import VisionKit

class ScanText: UIViewController, VNDocumentCameraViewControllerDelegate {
    
    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var TextScan: UITextView!
    @IBOutlet weak var buttonStartShape: UIButton!
    @IBOutlet weak var infoScattaUnaFoto: UILabel!
    @IBOutlet weak var copyButtonShape: UIButton!
    
    var textRecognitionRequest = VNRecognizeTextRequest(completionHandler: nil)
    private let textRecognitionWorkQueue = DispatchQueue(label: "MyVisionScannerQueue", qos: .userInitiated, attributes: [], autoreleaseFrequency: .workItem)
    
    var classView = ViewController()
    var arrayText = String()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        imageView.layer.cornerRadius = 15
        imageView.clipsToBounds = true
        
        TextScan.layer.cornerRadius = 15
        TextScan.clipsToBounds = true
        
        copyButtonShape.layer.cornerRadius = 25
        copyButtonShape.clipsToBounds = true
        
        buttonStartShape.layer.cornerRadius = 25
        buttonStartShape.clipsToBounds = true
        
        TextScan.isEditable = true
        setupVision()
        
        
        
    }
    
    @IBAction func TakePicture(_ sender: Any) {
        let scannerViewController = VNDocumentCameraViewController()
        scannerViewController.delegate = self
        present(scannerViewController, animated: true)
        
    }
    
    
    private func setupVision() {
      
        textRecognitionRequest = VNRecognizeTextRequest { (request, error) in
            guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
            
            var detectedText = ""
            for observation in observations {
                guard let topCandidate = observation.topCandidates(2).first else { return }
                print("text \(topCandidate.string) has confidence \(topCandidate.confidence)")
                
                
                detectedText += topCandidate.string
                detectedText += "\n"
                
                
            }
            
            DispatchQueue.main.async {
                self.TextScan.isHidden = false
                 self.infoScattaUnaFoto.isHidden = true
                self.copyButtonShape.isHidden = false
                self.buttonStartShape.setTitle("Ripeti", for: .normal)
                self.TextScan.text += detectedText
                self.TextScan.flashScrollIndicators()
                
            }
        }
        
        textRecognitionRequest.recognitionLevel = .accurate
    }
    private func processImage(_ image: UIImage) {
        imageView.image = image
        recognizeTextInImage(image)
    }
    
    private func recognizeTextInImage(_ image: UIImage) {
        guard let cgImage = image.cgImage else { return }
        
        TextScan.text = ""
        textRecognitionWorkQueue.async {
            let requestHandler = VNImageRequestHandler(cgImage: cgImage, options: [:])
            do {
                try requestHandler.perform([self.textRecognitionRequest])
            } catch {
                print(error)
            }
        }
    }
    func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {
        /* guard scan.pageCount >= 1 else {
         controller.dismiss(animated: true)
         return
         }*/
        for i in 0 ..< scan.pageCount {
            let img = scan.imageOfPage(at: i)
            processImage(img)
            
        }
        
        let originalImage = scan.imageOfPage(at: 0)
        print(originalImage)
        //let newImage = compressedImage(originalImage)
        controller.dismiss(animated: true)
        
        
    }
    
    func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFailWithError error: Error) {
        print(error)
        controller.dismiss(animated: true)
    }
    
    func documentCameraViewControllerDidCancel(_ controller: VNDocumentCameraViewController) {
        controller.dismiss(animated: true)
    }
    
    func compressedImage(_ originalImage: UIImage) -> UIImage {
        guard let imageData = originalImage.jpegData(compressionQuality: 1),
            let reloadedImage = UIImage(data: imageData) else {
                return originalImage
        }
        return reloadedImage
    }
    //MARK: By tapping on this button, I pass all the data.
    
    @IBAction func CopyText(_ sender: Any) {
        let vc = (storyboard?.instantiateViewController(identifier: "SpeakDetail") as? ViewController)!
        
        vc.textscannerized = TextScan.text
        
        self.navigationController?.pushViewController(vc, animated: true)
        
    }
    
}

Это изображение

...