首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

初识ARKit iOS卷

3D模型常常是.scn .dae .fbx格式 如果你创建了AR的工程 那么工程里会有一个小飞机的3D模型 art.scnassets文件夹,名为ship.scn *** #ARSession 是用于管理相机类和会话类的...*** #SCNNode 节点,它可以是美工拿过来的模型(不规则),也可以是你自己用代码创建的模型(常常是规则的) *** #ARKit 这个框架主要是管理相机和相机铺抓到的画面 给SceneKit提供坐标和角度...*** #SceneKit 这个框架才是管理3D模型 如果你想用纯代码创建一个AR工程,那么你应该把系统自动Main.storyboard创建的ARSCNView给去掉 具体代码如下 // //...ViewController.m // 第三次敲这个代码 // // Created by jp on 4/12/17. // Copyright © 2017年 poco....All rights reserved. // #import "ViewController.h" //导入框架 #import #import <SceneKit

1.7K180

ARKit和CoreLocation:第一部分

ARSessionARKit中,ARSession协调创建增强现实体验所需的逻辑和数据。这包括摄像机和运动数据以及周围移动时跟踪世界所需的计算。...将节点添加到场景 ? https://developer.apple.com/documentation/scenekit/scnsphere 我们继续之前,让我们先做一些基本的事情。...当我们将SCNVector3上的最后一个属性设置为-1时,我们将z轴设置为摄像机前面的一米。如果一切按计划进行(应该),屏幕将显示如下内容: ? image.png 目前这种方法很好。...当你运行它时,屏幕前应该有一个漂浮在你面前的屏幕截图。...环-T-循环 viewDidLoad下面添加以下行: class ViewController: UIViewController, ARSCNViewDelegate { override

2.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

Xcode:处理故事板的更好方式 享受Interface Builder的提示和技巧

另一方面,许多开发人员构建具有复杂导航功能的大型多屏幕应用程序时仍然会遇到一些界面问题。 本文中,我将在您处理项目中的故事板和笔尖时分享一些好的做法。...当您使用“if / else”或“switch”语句添加一些segues时,PrepareForSegue方法将变得难看并且不可读。 有什么选择?...当您想要按下按钮导航到下一个viewController时,只需为此按钮添加一个IBAction,并在代码中初始化此viewController:当您采用建议#3时,它实际上是一行代码。...有时导航流程应该将用户带回到前一个屏幕。 这是另一个常见的错误:使用新的segue导航回以前的viewController。...prepareForUnwind方法的所有缺点prepareForSegue方法(见前面的建议) 什么是更简单的方法?

1.4K30

ARKit 的配置-您的AR项目的幕后

对象库 检查员的左上方,有一个圆形图标,用于存储对象。如果您长按它,您可以访问对象库或媒体库。对于Xcode 9,它位于屏幕的右下角。...转到ViewController.swift文件。这是所有代码都是针对我们之前Main.storyboard中看到的视图控制器场景编写的。 导入套件 套件是Apple提供的框架,它们与特定主题相关。...查看控制器类 导入下方,ViewController已被声明为UIViewController类的一部分,并且与故事板中的视图相关。类具有属性,方法和协议,所有这些都在开发中被利用。...统计 viewDidLoad中,这行代码允许屏幕上显示统计信息。运行该应用程序以检查它。...添加它们以屏幕上看到它。调试选项是一个数组或列表,因此您需要使用方括号。现在运行应用程序。 顺便说一句,您也可以单独显示它们而不使用方括号。 世界原点 世界原点是视图加载时摄像机的起始位置。

2.5K20

View Controller编程指南

该root view中,您添加了需要显示内容的view。 图显示了ViewController和View之间的内置关系。...添加自定义变量会创建一个类似于图所示的关系,其中ViewController具有对数据的引用以及用于呈现该数据的View。 你的工作是两者之间来回移动数据。...当涉及容器ViewController时,UIKit可能会修改链来简化您必须编写的代码。不同的演示风格对于它们屏幕上的显示方式有不同的规则 - 例如,全屏显示总是覆盖整个屏幕。...适配修改 应用程序可以各种iOS设备上运行,并且ViewController被设计为适应这些设备上不同大小的屏幕。...而不是使用单独的ViewController来管理不同屏幕上的内容,而是使用内置的适配性支持来响应ViewController中的大小和大小等级更改。

1.2K20

iOS开发之UIScrollView无限滚动

UIScrollView 的无限滚动主要应用在图片轮播器、欢迎界面等场景。首先需要说明的是,文本所讲的是一种"笨办法",但是好理解且容易实现,图片不多的时候用它也无妨。...它的原理是在要显示的图片前后各加一张图片即在第一张图片之前放最后一张图片,最后一张图片之后放第一张图片,然后滚动到边缘的时候,巧妙的过渡一下就可以"瞒天过海","以假乱真"的造成无限滚动的假象。...2、代码实现,主要分为:添加UIScrollView,添加显示图片,添加UIPageControl,然后监听UIScrollView的滚动,根据滚动的位置来设置UIPageControl,最重要的是对于滚动到两个边缘时要特殊处理一下...,代码如下: #import "ViewController.h" //屏幕宽度 #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width..._imgArray = [[NSMutableArray alloc]initWithCapacity:MAX_SIZE]; //在要展示的5张图片的前后各加一张图片,第一张前面加第五张

1.7K100

IOS开发之获取Storyboard创建的ViewController

前面的两篇博客都是学习有关屏幕适配也就是相对布局的东西,这篇博客中将会学习视图间的切换。视图间的切换我们可以用代码完成或者用storyboard来建立各个视图控制器间的关系。...1.首先我们先用我们的storyboard来拖拽出我们要用的控件,再添加一个NavigationController,下面图一是给我们的主视图添加NavigatinController, 图二是最终效果... @end ​    (2)ViewController.m中中进行回调注册和实现协议中相应的方法,代码如下: 1 2 3 4 5 6 7 8 9 10 11...页面切换时我们得关联两个页面中的关系。...先简单的说这些吧,以后学到了新的内容更新博客内容,欢迎批评指正。

1.8K80

iOS开发之地图

iOS开发中,地图也是很多App都需要使用的功能。本文主要对iOS中的地图知识点进行介绍。需要说明的是地图看似很复杂,其实它仅仅是一个控件,就和UIButton、UITableView等一样。...一、理论知识 地图既然是控件,就可以StoryBoard和代码中使用 地图上如果想要显示用户的位置,必须与定位配合,那么就需要创建定位管理器、设置权限等,可以参考iOS开发之定位,同时需要设置地图的属性...实现效果 三、地图缩放级别 实现功能:之前功能的基础上实现地图的任意视角(“缩放级别”) 代码 @interface ViewController ()...实现效果 四、添加标注 功能:点击屏幕,可以添加标注 说明:添加标注分三步 创建标注模型 重写地图的代理方法,返回标注的样式 将标注添加到地图 代码 标注模型 @interface MyAnnotation...实现效果 五、添加自定义标注 实现功能:在前面的基础上,自定义标注的样式 代码:只需要更改上面的代理方法即可 -(MKAnnotationView *)mapView:(MKMapView *)

1.1K20

【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )

-> 属性 -> Size 选择屏幕尺寸; 5.Storyboard Entry Point 箭头 : 指向界面初始化时创建的第一个 ViewController, 可在 ViewController...LaunchScreen.storyboard 界面 : 该界面不是用于展示应用程序的界面 ; 1.界面作用 : 该界面是 进入 首界面 之前的 一个欢迎界面, 该界面 是 LaunchScreen.storyboard..., 关联 ViewController.h 中的属性与 Main.storyboard 中的属性; 4.创建 Label 属性 并关联界面 : ViewController.h 中定义 Label...| ② 拷贝素材 ) 项目设置 : 设置屏幕大小, 拷贝需要用到的素材, 1.设置 Main.storyboard 设计大小 : ① 进入 Main.storyboard 界面, 文件查看器界面,...: Main.storyboard 中添加一个按钮, 修改按钮文字为 “代码生成UIView控件”, 进入辅助编辑器模式, 按下 control 键不放, 左键拖动按钮到 ViewController.m

4.7K30

Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(一)

项目名称 Mac OSX系统中,屏幕的右上角就是我们说的状态栏(NSStatusBar),一直是常驻应用的必争之地。...1.2 选中ViewController.m文件,添加代码 ? 实现代码 1.3 添加图片资源 ?...添加图片资源到项目工程中 如果没有出错,运行项目,你应该看到一个空的窗口,而且屏幕的右上角已经出现了我们应用的常驻标志^_^,是不是感觉很容易啊~ ?...NSPopover 提供了屏幕内容视图上显示额外信息内容的一种方式(其实这个类似于iPad开发中是常见的UIPopoverPresentationController),它的定位相对与现有内容。...ViewController添加popover属性,并在viewDidLoad中进行初始化和配置。 1.4 现在ViewController.m实现代码: ?

2.1K20

视觉效果 -- iOS Core Animation 系列三

本片文章前三章内容大家比较常用,后面的可能会不那么常用,前面的基础内容不想看了可以直接从第4段开始 圆角 conrnerRadius 这个功能还是很常见的,本来不想记了,为了整个系列的完整性,还是啰嗦一下...然后代码中写入如下代码: @interface ViewController () @property (weak, nonatomic) IBOutlet UIView *leftView; @property...而且绘制边框会显示最上层。 阴影 shadow 阴影属性 控制图层阴影的属性会比前面的边框多一些。...我们可以info.plist文件中添加UIViewGroupOpacity并设置成YES来打到这个效果。还有一种方法就是对CALayer进行设置。...启用shouldRasterize属性,一般需要同时设置图层的rasterizationScale属性防止出现Retina屏幕像素化的问题。

1.1K30

基于ARKit的iOS无限屏实现,还原锤子发布会效果

// 原理 // 要实现无限屏,主要有两点,第一点是一个稳定的惯导算法来获取手机的相对位移,第二点是渲染一个远大于手机屏幕的虚拟空间,使得视口发生位移时,产生在无限屏上游历的效果,本文将对这两点的具体实现进行讲解...ARSession启动后,会不断通过回调通知ARFrame的更新,回调方法中我们可以拿到摄像机的transform矩阵,该矩阵的大小为4x4,经过查阅资料了解到,矩阵最后一行的前三个元素分别是x、y...渲染虚拟空间 无限屏的实现类似于用手机浏览器查看电脑版网页的效果,以手机屏幕为尺寸作为一个视口,一个大于手机屏幕的范围内进行浏览,实际上是视口的位置发生了变换,可以理解为一个垂直向下拍摄的摄像机一个巨幅图片上进行移动...上开辟了一个代码执行的入口,随后我们可以根据当前ScrollView去找到ViewController和Window,通过Reveal分析,桌面的根窗口为SBHomeScreenWindow,下面的代码演示了如何找到这个窗口并记录下来...进入和退出无限屏模式 进入无限屏模式,即将Hook的类直接隐藏,Window上添加一个FakeScrollView,并开启ARSession进行位置追踪;反之,退出无限屏模式即是对关闭ARSession

78540

平面检测-搜索真实世界的表面

配置声明下面写: configuration.planeDetection = .horizontal ARSCNViewDelegate ViewController类中,添加了一个委托ARSCNViewDelegate...那是因为我们已经同一个类中采用了ARSCNViewDelegate。ViewController.swift文件中,将其删除。...平面节点 当我们运行应用程序时,我们可以调试区域中看到找到水平表面时。但是屏幕上看到它不是很好吗?为此,我们将添加一个函数来创建一个节点作为我们的视觉辅助。...好吧,还记得我们第一次拖动飞机作为屏幕时的手表场景吗?它的默认方向是垂直的。嗯,这里也是如此。所以我们需要将它旋转90度。但是,Swift将角度存储弧度中。如何将度数转换为弧度?...函数createPlane中,我们将在x轴上旋转网格以使其成为水平。也要顺时针旋转,在前面添加一个减号。

2.9K30

UIPageViewController使用 分享笔记

翻页效果展示图 结构 使用UIPageViewController前,我们应该先搞清楚它的层次结构。(这里是我使用过程中的理解,如有不对,欢迎指出)。 ?...pageviewcontroller层次展示图 UIPageViewController作为子控制器加载viewController上。作为文本控制器的容器,且提供翻页的动画效果。...其中参数中的viewController为当前显示的控制器(这个参数使用doubleSided属性时非常重要,后面会讲到)。...但是开发阅读软件中我还遇到一个非常严重的体验问题。翻页的时候,书页背面的颜色默认为白色。黑夜模式中非常“辣眼睛”! ? 黑夜模式书页背面为白色 !...BackViewController上只有一个大小为屏幕大小的UIImageView,第一次进入时,将参数viewController的view作为图片设置到BackViewController的UIImageView

2.6K80

iOS学习——获取当前最顶层的ViewController

iOS开发过程中,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层的ViewController上展示一个UIAlertController...,或者最顶层的ViewController上present另一个ViewController,或者进行其他操作。...寻找的过程中,要分别考虑当前ViewController是UITabBarController和UINavigationController的情况,同时还要考虑到当前ViewController是否通过...vc; } return nil; } 使用方法: UIViewController *topmostVC = [self topViewController]; 方法二: //获取当前屏幕显示的...UIViewController+Helper.h" @property (nonatomic, strong ,readonly) UIViewController * _Nullable currentVC; //当前屏幕显示的

6.4K50

将模型添加到场景中 - 您的环境中显示3D内容

约束到底部20但这次是安全区域,并取消选中Constrain到边距。然后,将鼠标悬停在左侧的“ 对齐”图标上,并在“容器”中选中“水平”以屏幕中水平居中。...添加按钮功能 我们刚刚在屏幕添加了按钮,但它根本没有做任何事情。当我们触摸它时,让按钮执行某些操作。现在,打开Assistant编辑器并控制将故事板中的按钮拖到ViewController类。...然后,向ViewController添加扩展。...焦点方块隐藏/显示选项 当我们屏幕上显示模型时,我们仍然看到焦点方块干扰了我们漂亮的模型。如果我们安置后隐藏它,你怎么说?...但是,如果我们屏幕上看不到任何内容呢?我们再次需要它来选择下一个位置。我们屏幕上看到的是不断变化的,所以我们需要在updateFocusSquare()中实现它。

5.5K20
领券