小编mag*_*oth的帖子

即时添加图像到AR资源以进行图像识别

ARKit1.5介绍图像识别.在代码中,您必须创建一组参考图像,如下所示:

let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: nil)
Run Code Online (Sandbox Code Playgroud)

然后可以识别集合中包含的图像.

我想知道是否可以动态添加图像到此AR Resources文件夹.例如,用户可以拍照并将其发送到服务器,然后由用户识别ARKit.或者用户可以根据他的位置等接收一组图像.

ios swift arkit

11
推荐指数
2
解决办法
4514
查看次数

UIRefreschControl的Glitchy动画,带有导航栏的大标题

我有一个嵌入导航控制器的控制器,带有大标题和UIRefreshControl.当我在tableView上进行快速刷新时,活动指示器的动画非常糟糕.

在此输入图像描述

我不知道我的代码中是否有不良行为?

tableView.refreshControl = UIRefreshControl() tableView.refreshControl?.addTarget(self, action: #selector(downloadData), for: .valueChanged)

uinavigationbar ios pull-to-refresh swift ios11

10
推荐指数
1
解决办法
1828
查看次数

UILabel的NSTextAlignment.Justified不起作用

我试图证明我的UILabel文本,但它不起作用.

我的宣言UIView:

descriptionUIView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
Run Code Online (Sandbox Code Playgroud)

我的宣言UILabel:

bottleDescriptionLabel = UILabel(frame: CGRect(x: widthMargin, y: bottleDescriptionTitleLabel.frame.maxY + heightMargin, width: self.view.frame.width - (2 * widthMargin), height: heightBottleDescription - (2 * heightMargin)))
bottleDescriptionLabel.font = UIFont(name: "AvenirNext-Regular", size: 16)
bottleDescriptionLabel.text = bottleDescriptionString
bottleDescriptionLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
bottleDescriptionLabel.textAlignment = NSTextAlignment.Justified
bottleDescriptionLabel.numberOfLines = 0
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

在此输入图像描述

我不知道还有什么可以NSTextAlignment.Justified用来证明我的文本.我应该用UITextView吗?

justify text-alignment uilabel swift

8
推荐指数
1
解决办法
1万
查看次数

"Spotify就像"快速拖动底层球员

我想在我的屏幕底部有一个条形/按钮,其行为类似于Spotify上的迷你播放器栏.如果我点击它,会从底部显示一个视图.如果我拖动它,我可以玩它并让它上下移动.如果我发布它,它会自行继续.

我检查了这个问题:如何在点击歌曲时像Spotify的音乐播放器一样垂直地对象进行动画制作,但它只调整了(图像)视图的大小,我想放置一个新的ViewController(我不能拖动它,只能点击它).

我找到了一个项目:https://github.com/andriirogulin/ARSlidingPanel,看起来效果非常好.这真的是我想要达到的目标.

我的问题是我几乎不了解Objective-C.此外,我尝试遵循集成教程,我无法从ARSPContainerController添加自定义segue.我需要从一个对象拖动它,并且示例项目中没有.因此,我想知道:

  1. 这种特定的底栏有一个名称(为了便于研究)以及我想用它的方式.
  2. 有一个Pod /项目可以在swift中完成.
  3. 有人有一个具有此行为的示例项目?

drag uiviewanimation ios swift

4
推荐指数
1
解决办法
4374
查看次数

如何在ARKit 1.5中初始检测后跟踪图像锚点?

我正在尝试使用图像识别的ARKit 1.5,因为我们可以从Apple示例项目代码中读取: 初始检测后不会跟踪图像锚点,因此创建一个限制平面可视化显示持续时间的动画.

一个ARImageAnchor没有center: vector_float3喜欢的ARPlaneAnchor,我找不到如何跟踪检测到的图像锚点.

我希望在这个视频中实现类似的东西,即拥有修复图像,按钮,标签等等,保持在检测到的图像之上,我不明白我是如何实现这一点的.

这是图像检测结果的代码:

// MARK: - ARSCNViewDelegate (Image detection results)
/// - Tag: ARImageAnchor-Visualizing
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
    guard let imageAnchor = anchor as? ARImageAnchor else { return }
    let referenceImage = imageAnchor.referenceImage
    updateQueue.async {

        // Create a plane to visualize the initial position of the detected image.
        let plane = SCNPlane(width: referenceImage.physicalSize.width,
                         height: referenceImage.physicalSize.height) …
Run Code Online (Sandbox Code Playgroud)

augmented-reality ios swift arkit

3
推荐指数
1
解决办法
6364
查看次数

UITableViewCell 中不遵守 NSLayoutConstraints

我有一个UITableViewCellUILabelUIImageView。图像可以是可见的或隐藏的。

这是我的故事板: 故事板截图

的尾随部分有两个约束UILabel,一个 (a) 等于 8 与UIImageView,另一个 (b) 大于或等于 8 与单元格的右边距。我保留第一个 (a) 的引用,如果有声音或没有声音,我会激活或停用约束。

这是我的代码:

class MyTableViewCell: UITableViewCell {

    @IBOutlet weak var label: UILabel?
    @IBOutlet weak var icon: UIImageView?
    @IBOutlet weak var spaceBetweenIconAndLabelConstraint: NSLayoutConstraint?

    override func awakeFromNib() {
        super.awakeFromNib()
        icon?.image = UIImage(named: "sound")
    }

    func config(with name: String, hasSound: Bool) {
        label?.text = name
        configSound(hasSound)
    }

    private func configSound(_ hasSound: Bool) {
        icon?.isHidden = !hasSound
        spaceBetweenIconAndLabelConstraint?.isActive = hasSound
    }
}
Run Code Online (Sandbox Code Playgroud)

我有几个带有声音图标的单元格,很多没有。这是特定单元格首次出现时的样子: …

uitableview ios nslayoutconstraint swift prepareforreuse

3
推荐指数
1
解决办法
464
查看次数

ARImageAnchor转换矩阵的坐标与ARPlaneAnchor的坐标相差太大

我正在做这个简单的事情:

  1. 垂直平面检测
  2. 垂直平面上的图像识别

图像被挂在检测到的平面上(在我的墙上)。在这两种情况下,我都实现的renderer:didAddNode:forAnchor:功能ARSCNViewDelegate。我站在垂直平面检测和图像识别的地方。

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
    guard let shipScene = SCNScene(named: "ship.scn"), let shipNode = shipScene.rootNode.childNode(withName: "ship", recursively: false) else { return }
    shipNode.position = SCNVector3(anchor.transform.columns.3.x, anchor.transform.columns.3.y, anchor.transform.columns.3.z)
    sceneView.scene.rootNode.addChildNode(shipNode)
    print(anchor.transform)
}
Run Code Online (Sandbox Code Playgroud)

在垂直平面检测的情况下,anchor将为ARPlaneAnchor。在图像识别的情况下,anchor将为ARImageAnchor

为什么这两个锚点的转换矩阵如此不同?我正在打印anchor.transform并得到以下结果:

1。

simd_float4x4([
    [0.941312,  0.0,        -0.337538,  0.0)],
    [0.336284,  -0.0861278, 0.937814,   0.0)],
    [-0.0290714,-0.996284,  -0.0810731, 0.0)],
    [0.191099,  0.172432,   -1.14543,   1.0)]
])
Run Code Online (Sandbox Code Playgroud)

2。

simd_float4x4([
    [0.361231,  0.10894,    0.926093,   0.0)], …
Run Code Online (Sandbox Code Playgroud)

augmented-reality ios swift arkit

1
推荐指数
1
解决办法
1227
查看次数

获取 3D 模型的高度及其转换后的屏幕坐标

我正在渲染一个 Collada (*.dae) 文件ARKit。作为我的叠加层,我ARSCNView添加了一个SKScene只显示消息气泡(还没有文本)的。

目前,我知道如何修改气泡的位置,使其看起来总是在我的 3D 模型的脚下。我这样做:

func renderer(_ renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: TimeInterval)  {
    if let overlay = sceneView.overlaySKScene as? BubbleMessageScene {            
        guard let borisNode = sceneView.scene.rootNode.childNode(withName: "boris", recursively: true) else { return }

        let boxWorldCoordinates = sceneView.scene.rootNode.convertPosition(borisNode.position, from:sceneView.scene.rootNode.parent)
        let screenCoordinates = self.sceneView.projectPoint(boxWorldCoordinates)
        let boxY = overlay.size.height - CGFloat(screenCoordinates.y)

        overlay.bubbleNode?.position.x = CGFloat(screenCoordinates.x) - (overlay.bubbleNode?.size.width)!/2
        overlay.bubbleNode?.position.y = boxY
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,我的气泡总是在3D 模型的脚下,因为我只能获得我的模型的 SCNNode 位置,它被锚定在那里。我希望它位于我的模型的头部。

有什么方法可以获取我的 3D 模型的高度,然后获取其转换后的屏幕坐标,所以无论我在哪里使用手机,看起来气泡消息总是在头部旁边?

在此处输入图片说明

ios swift arkit

1
推荐指数
1
解决办法
1059
查看次数