2016-02-24 13 views
8

edit: Penso che potrebbe essere di circa carico .xib dalla libreria Objective-C e la visualizzazione sul controller della vista di Swiftcorrettamente utilizzando la libreria Obj-C nel progetto Swift


Ho cercato di usare https://github.com/promet/PRAugmentedReality libreria in un'app rapida.

Funziona perfettamente con obj-c, come: enter image description here

Ma quando ho ponte al progetto rapido che inizia ad agire in questo modo: enter image description here

Qui sotto potete vedere i miei passi quando ho integrato questa libreria al mio rapido progetto, i codici del mio progetto rapido e il link per il download per entrambi i progetti obiettivo-c e rapido. Anche qui sono i video di YouTube per PR Augmented quadro Realtà:

Link 1: Getting Started -> https://www.youtube.com/watch?v=fdN0XAoZXOY

Link 2: Walkthrough of Internals-> https://www.youtube.com/watch?v=Xmx-0OnzTPY

Swift fasi del progetto:

  1. Creazione di una singola applicazione vista con Xcode Versione 7.2 .1 (7C1002) denominato demoAR
  2. Aggiungo Foundation.framework, CoreGraphics.framework e UIKit.framework da Target -> demoAR -> Build Phases -> Link Binar y con Librerie
  3. Quindi, File -> Nuovo target -> Cocoa Touch Framework e fatto clic su Avanti
  4. Creato un Target che ha queste proprietà: Nome prodotto: PRAR, Lingua: Objective-C e Identificatore organizzazione: com.timur. PRAR poi ho cliccato Finish enter image description here
  5. Ho creato un altro gruppo sotto PRAR e l'ho chiamato "Classes", quindi ho copiato i file dalla cartella Classes di framework e li ho aggiunti alla cartella PRAR/Classes.
  6. ho cambiato ogni file .h di di framework di destinazione L'iscrizione a "Pubblico"

List item

  1. Poi ho importato i file di intestazione per il mio file di bridging (PRAR. h) Ti piace questa

    #import <PRAR/ARSettings.h> 
    #import <PRAR/PRARManager.h> 
    #import <PRAR/ARController.h> 
    #import <PRAR/ARObject.h> 
    #import <PRAR/ARRadar.h> 
    #import <PRAR/LocationMath.h> 
    
  2. resto di ciò che viene fatto al fine di eseguire questo quadro all'interno del mio progetto rapida rimane nel mio file ViewController.swift quali:

    import UIKit 
    import PRAR 
    var prARManager = PRARManager() 
    let x: Int32 = AR_VIEW_TAG 
    let y = Int(x) 
    class ViewController: UIViewController, PRARManagerDelegate{ 
    
        func alert(title: String, withDetails details: String) { 
         print("alert function") 
         let alert: UIAlertView = UIAlertView(title: title, message: details, delegate: nil, cancelButtonTitle: "Ok", otherButtonTitles: "") 
         alert.show() 
        } 
    
        override func viewDidLoad() { 
         super.viewDidLoad() 
         // Do any additional setup after loading the view, typically from a nib. 
         print("1") 
         // AŞAĞIDAKİ SATIRDA BİR SORUN VAR!!! 
         prARManager = PRARManager.init(size: self.view.frame.size, delegate: self, showRadar: true) 
         print("2") 
        } 
    
        override func viewDidAppear(animated: Bool) { 
         print("3") 
         let locationCoordinates = CLLocationCoordinate2D(latitude: 41.085468, longitude: 29.044033) 
         print("4") 
         prARManager.startARWithData(self.getDummyData() as [AnyObject], forLocation: locationCoordinates) 
         print("5") 
        } 
    
        func getDummyData() -> NSArray { 
         print("6") 
         let dummyData: [AnyObject] = [["id": 0, "lat": 40.9780919, "lon": 27.511674, "title": "Tekirdağ"], ["id": 1, "lat": 40.8025157, "lon": 29.4397941, "title": "Gebze"]] 
         print("7") 
         return dummyData; 
        } 
    
        func prarDidSetupAR(arView: UIView, withCameraLayer cameraLayer: AVCaptureVideoPreviewLayer, andRadarView radar: UIView) { 
         print("8") 
         NSLog("Finished displaying ARObjects") 
         print("9") 
         self.view.layer.addSublayer(cameraLayer) 
         print("10") 
         self.view!.addSubview(arView) 
         print("11") 
         self.view.bringSubviewToFront(self.view.viewWithTag(y)!) 
         //self.view.bringSubviewToFront(self.view!.viewWithTag(AR_VIEW_TAG)); 
         //self.view!.bringSubviewToFront(self.view!.viewWithTag(042313)!) 
         //print("12") 
         self.view.addSubview(radar) 
         //print("13") 
        } 
    
        func prarUpdateFrame(arViewFrame: CGRect) { 
         print("14") 
         self.view.viewWithTag(y)?.frame = arViewFrame 
         print("hello") 
         //self.view.viewWithTag(AR_VIEW_TAG)!.frame = arViewFrame 
         //self.view!.viewWithTag(042313)!.frame = arViewFrame 
         print("15") 
        } 
    
        func prarGotProblem(problemTitle: String!, withDetails problemDetails: String!) { 
         print("16") 
         self.alert(problemTitle, withDetails: problemDetails) 
         print("17") 
        } 
    } 
    

Qui di seguito è possibile scaricare l'Objective-C e progetti veloci. Voglio solo che un progetto rapido sia in grado di funzionare come progetto obiettivo-c. Come lo posso fare? Sto camminando costantemente attraverso tutto il framework e il mio codice ma non riesco a vedere qualcosa di sbagliato. * ps: sto usando Xcode versione 7.2.1

collegamento

del progetto Swift: Link https://drive.google.com/file/d/0B-cDfWHidgvcYnFNcnlMZG1aaDg/view?usp=sharing

del progetto Objective-C: https://drive.google.com/file/d/0B-cDfWHidgvcQUFXbktYSE5CeHM/view?usp=sharing

+0

* ps: Ho provato a formattare il più possibile, ma ora sembra qualcosa di sbagliato con StackOverflow. Impossibile formattare il codice in modo corretto. –

+0

Penso che potrebbe essere il caricamento del file .xib dalla libreria Object-C e la visualizzazione sul controller di visualizzazione di swift. Qualche idea ... –

risposta

2

Hai dimenticato di aggiungere risorse quadro a te progetto Swift, vedere il progetto Obj-C:

enter image description here

rispetto al progetto Swift:

enter image description here

Assicurarsi che tutte le immagini e le xibs necessarie hanno l'appartenenza di destinazione in "demoAR":

enter image description here

+0

che ha risolto il mio problema. Grazie! :) –

1

Se si guarda al vostro progetto Obj-C, vedrete i file di immagine (come RadarMV .png) sono assegnati alla destinazione dell'app. Ma nel progetto Swift, sono assegnati all'obiettivo PRAR. Quindi l'app non trova semplicemente le immagini che sta tentando di caricare.

È possibile modificare il codice per trovare le immagini nel pacchetto PRAR. Ma una soluzione più rapida (forse non migliore) è quello di assegnare solo le immagini al target app:

Image Targets

Questo è stato sufficiente per far funzionare le cose per me.

+0

Ora è risolto. Grazie! :) –

+0

Qualche idea se voglio usare questa libreria in Landscape Camera view in iPhone? – foram