2016-02-24 9 views
8

edit: Myślę, że to może być o załadunku .xib z Objective-C biblioteki i wyświetlanie go na widoku kontrolera SwiftaPrawidłowo używając Obj-C biblioteki w projekcie Swift


Próbowałem użyć https://github.com/promet/PRAugmentedReality biblioteka w szybkiej aplikacji.

To doskonale współpracuje z obj-c, jak: enter image description here

Ale kiedy most go do szybkiego projektu zacznie działać tak: enter image description here

Poniżej można zobaczyć moje kroki, kiedy zintegrowany tej biblioteki do mojego szybkiego projektu, kody mojego szybkiego projektu i link do pobrania dla projektów zarówno obiektywnych jak i szybkich. Także tutaj są youtube filmy PR Augmented ram Rzeczywistość:

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 etapy projektu:

  1. Stworzenie jednolitego stosowania widok z Xcode wersja 7.2 .1 (7C1002) o nazwie demoAR
  2. Dodaję Foundation.framework, CoreGraphics.framework i UIKit.framework z Targets -> demoAR -> Build Phases -> Link Binar y z bibliotekami
  3. Następnie, Plik -> Nowy cel -> Cocoa Touch Framework i kliknięty Dalej
  4. Utworzono obiekt docelowy, który ma następujące właściwości: Nazwa produktu: PRAR, Język: Objective-C i Identyfikator organizacji: com.timur. PRAR, a następnie kliknąłem Zakończ enter image description here
  5. Utworzyłem inną grupę pod PRAR i nazwał ją "Klasy", Potem skopiowałem pliki z folderu Klasy z frameworka i dodałem je do folderu PRAR/Classes.
  6. Zmieniłem każdy .h plików ram za docelowy członkostwo "publiczny"

List item

  1. potem importowane pliki nagłówkowe do mojego pliku pomostowej (PRAR. h) jak to

    #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. Reszta co zrobił w celu uruchomienia tej ramy, w moim szybkim projektu pozostaje w moim pliku ViewController.swift takich jak:

    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") 
        } 
    } 
    

Poniżej można pobrać Objective-C i szybkie projektów. Chcę tylko, aby szybki projekt mógł być uruchamiany jako projekt typu "cel-c". Jak mogę to zrobić? Ciągle przechodzę przez wszystkie ramy i mój kod, ale nie widzę czegoś złego. * ps: Używam wersji Xcode 7.2.1

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

objective-c projektu Link: https://drive.google.com/file/d/0B-cDfWHidgvcQUFXbktYSE5CeHM/view?usp=sharing

+0

* ps: Próbowałem sformatować tak dużo, jak tylko potrafię, ale teraz wydaje się, że coś jest nie tak ze stackoverflow. Nie można poprawnie sformatować kodu. –

+0

Myślę, że może to dotyczyć ładowania .xib z biblioteki object-c i wyświetlania go na kontrolerze widoku Swift. Wszelkie pomysły ?? .. –

Odpowiedz

2

zapomniałeś dodać zasoby ramowych wam Swift projekt, zobacz projekt Obj-C:

enter image description here

w porównaniu do projektu Swift:

enter image description here

Sprawdź, czy wszystkie niezbędne obrazy i xibs mieć docelowego członkostwa w „demoAR”:

enter image description here

+0

, które rozwiązały mój problem. Dzięki! :) –

1

Jeśli spojrzeć na projekcie Obj-C, zobaczysz pliki graficzne (jak RadarMV .png) są przypisane do celu aplikacji. Ale w projekcie Swift są przypisani do celu PRAR. Tak więc aplikacja nie znajduje obrazów, które próbuje załadować.

Można zmodyfikować kod, aby znaleźć obrazy w pakiecie PRAR. Ale szybsze rozwiązanie (może nie lepiej) jest po prostu przypisać obrazy do docelowej aplikacji:

Image Targets

To wystarczyło, aby dostać rzeczy działa na mnie.

+0

Jest to teraz rozwiązane. Dzięki! :) –

+0

Każdy pomysł, jeśli chcę korzystać z tej biblioteki w widoku kamery krajobrazu w telefonie iPhone? – foram

Powiązane problemy