Skip to content

Add Live Text interaction to your app #44

@TaekH

Description

@TaekH

Add Live Text interaction to your app

Live Text?

이미지에서 텍스트를 식별하여 복사, 붙여넣기, 검색, 번역 등의 텍스트에서 지원하는 작업들을 해줄 수 있도록
도와주는 기능

Live Text 지원 기능

  • 이미지를 분석하고 사용자들이 콘텐츠와 상호작용하는 기능을 제공

image

  • 텍스트를 선택해서 복사하고 색인 및 번역과 같은 동작을 수행

image

  • 데이터 감지 흐름 작업 제공

image

  • QR코드와 상호작용

image

Live Text API

  • Swift 에서 이용이 가능하다.
  • iOS 16 부터 이용이 가능하다.

image

  • Live Text API의 사용 과정

image

  • 먼저 이미지를 Image Analyzer 로 입력을 받는다.
  • 비동기로 이미지를 분석한다
  • Image Analysis 객체 생성되고
    • Image AnalysisInteraction 또는
    • ImageAnalysisOverlayView 로 전달이 된다.

코드로 확인하면

import UIKit
import VisionKit

class LiveTextDemoController: BaseController, ImageAnalysisInteractionDelegate, UIGestureRecognizerDelegate {
   
    let analyzer = ImageAnalyzer()
    let interaction = ImageAnalysisInteraction()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        imageview.addInteraction(interaction)
    }
    
    override var image: UIImage? {
        didSet {
            interaction.preferredInteractionTypes = []
            interaction.analysis = nil
            analyzeCurrentImage()
        }
    }
    
    func analyzeCurrentImage() {
        if let image = image {
            Task {
               let configuration = ImageAnalyzer.Configuration([.text, .machineReadableCode])
                do {
                    let analysis = try await analyzer.analyze(image, configuration: configuration)
                    if let analysis = analysis, image == self.image {
                        interaction.analysis = analysis;
                        interaction.preferredInteractionTypes = .automatic
                    }
                }
                catch {
                    // Handle error…
                }
            }
        }
    }
}
  1. ImageAnalyzer와 ImageAnalysisInteraction 변수를 선언한다.
  2. analyzeCurrentImage() 함수를 생성 후 이미지가 일치하는지를 검사한다.
  3. 이미지가 일치한다면 configuration 에 Text를 찾고 분석하라고 전달을 한다.
  4. if let 에서는 이미지의 변동 유무와 분석 성공 유무를 확인 후에5.
    확인이 되었다면 interaction 에 분석 결과를 전달하고 preferredInteractionTypes 을 지정한다.

Tips and tricks

Preferred interaction types

  • 라이브 텍스트를 선택하고 감지하는 타입들을 의미한다.
interaction.preferredInteractionTypes = .automatic
  • 텍스트 선택과 더불어 데이터 감지기를 제공하는 타입

image

interaction.preferredInteractionTypes = .texstSelection
  • 텍스트만 선택하는 타입

image

interaction.preferredInteractionTypes = .dataDetectors
  • 텍스트를 선택하지 않고 데이터 감지기만 제공하는 타입

image

Supplementary Interface ( 보완 인터페이스 )

image

  • Live Text 의 버튼

  • Quick Actions
    분석에서 나온 데이터 감지기를 나타낸다. ( 복사 등 )

  • Supplementary Interface Custom

interaction.isSupplementaryInterfaceHidden = true
  • 텍스트 선택은 허용하지만 Live Text 버튼을 보여주지 않는 경우

image

interaction.supplementaryInterfaceContentInsets = UIEdgeInsets(top: 0, left: 12, bottom: 18, right: 12)
  • 기존 앱 콘텐츠 요소와 LiveText 버튼이 겹치는 경우의 위치 조절

image

supplemenratyInterfaceFont = UIFont.init(name: , size: )
  • Quick Actions의 텍스트 폰트 변경

image

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions