gpt4 book ai didi

ios - 在 Swift 项目中正确使用 Obj-C 库

转载 作者:IT王子 更新时间:2023-10-29 05:53:01 26 4
gpt4 key购买 nike

编辑:我认为这可能是关于从 objective-c 库加载 .xib 并将其显示在 swift 的 View Controller 上


我一直在尝试使用 https://github.com/promet/PRAugmentedReality swift 应用程序中的库。

它与 obj-c 完美配合,例如:enter image description here

但是当我将它连接到 swift 项目时,它开始像这样:enter image description here

下面您可以看到我将此库集成到我的 swift 项目时的步骤、我的 swift 项目的代码以及 objective-c 和 swift 项目的下载链接。这里还有 PR 增强现实框架的 youtube 视频:

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

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

Swift 项目步骤:

  1. 使用 Xcode 版本 7.2.1 (7C1002) 创建名为 demoAR 的单 View 应用程序
  2. 我从 Targets -> demoAR -> Build Phases -> Link Binary with Libraries 添加 Foundation.framework、CoreGraphics.framework 和 UIKit.framework
  3. 然后,File -> New Target -> Cocoa Touch Framework 然后点击 Next
  4. 创建了一个具有以下属性的目标:产品名称:PRAR,语言:Objective-C 和组织标识符:com.timur.PRAR 然后我单击完成 enter image description here
  5. 我在 PRAR 下创建了另一个组并将其命名为“Classes”,然后我从框架的 Classes 文件夹中复制文件并将它们添加到 PRAR/Classes 文件夹中。
  6. 我将框架的 Target Membership 的每个 .h 文件更改为“Public”

List item

  1. 然后我像这样将头文件导入到我的桥接文件 (PRAR.h)

    #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. 为了在我的 swift 项目中运行此框架所做的其余工作保留在我的 ViewController.swift 文件中,例如:

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

您可以在下面下载 objective-c 和 swift 项目。我只希望 swift 项目能够作为 objective-c 项目运行。我怎样才能做到这一点?我一直在遍历所有框架和我的代码,但我看不出有什么问题。 *ps: 我使用的是 Xcode 版本 7.2.1

Swift 项目的链接:https://drive.google.com/file/d/0B-cDfWHidgvcYnFNcnlMZG1aaDg/view?usp=sharing

Objective-C 项目链接:https://drive.google.com/file/d/0B-cDfWHidgvcQUFXbktYSE5CeHM/view?usp=sharing

最佳答案

您忘记将框架资源添加到您的 Swift 项目中,请参阅 Obj-C 项目:

enter image description here

与 Swift 项目相比:

enter image description here

确保所有必要的图像和 xib 在“demoAR”中具有目标成员资格:

enter image description here

关于ios - 在 Swift 项目中正确使用 Obj-C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35592066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com