首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >按钮与交互-使用按钮触发操作

按钮与交互-使用按钮触发操作

作者头像
iOSDevLog
发布于 2019-06-17 06:42:22
发布于 2019-06-17 06:42:22
5.5K00
代码可运行
举报
文章被收录于专栏:iOSDevLogiOSDevLog
运行总次数:0
代码可运行

在本节中,我们将介绍一个重要且简单的元素,即按钮。这个小元素可以改变整个UX。我们将使用该按钮来缩放我们的3D模型。此外,我们将尝试更改手机的壁纸。对于您的型号,如果您有不同的材质或颜色,您也可以更改它。

下载按钮和互动

要学习本教程,您需要Xcode 10。您可以下载Final Xcode项目,以帮助您与自己的进度进行比较。

设置

现在,您可以更改项目名称并添加应用程序图标。在设置页面中,将显示名称更改为角度AR或所需名称。在资产目录中,将应用程序图标从assets文件夹拖放到选定的插槽中。

主要故事板

我们在屏幕上放置一些按钮。使用模板,主故事板附带一个ARSCNView,我们无法在其上放置按钮。首先,删除ARSCNView并放置UIView。拥有UIView,允许我们放置这3个按钮并添加约束。这是按钮的约束:

按钮

约束

PlaceScreen

左:46点 / 底部:28点

加号按钮

水平中心 / 底部:28点

减号按钮

右:46点 / 底部:28点

放置按钮后放回ARSCNView,并将约束条件设置为0,即四边。确保约束视图的每一侧而不是安全区域。取消选中Constrain到边距。在布局中,将ARSCNView放在View下方,否则按钮将不会显示。

约束

IBAction为

现在我们有了按钮,我们需要给它们功能。通过单击右上角带有双圆圈的图标启用助理编辑器。您将看到我们同时拥有主故事板和代码。在swift文件中,您将看到一个与之前的ARSCNView链接的IBOutlet。由于我们删除了那个,将新的ARSCNView链接到该Outlet

让我们通过按住Control创建3个IBAction 并拖动ARSCNView Outlet 声明正下方的每个按钮。

选择:IBAction将它们命名为:plusButtonTapped,minusButtonTapped和placeScreenButtonTapped类型:UIButton

IBActions

类变量

2个第一个按钮的目的是能够调整我们的3D模型的大小。问题是iPhoneNode的声明是渲染器方法的局部变量。解决方案是声明另一个变量并使其成为与iPhoneNode相同的节点。在根级别和渲染器内声明变量iPhoneXNode,将2个变量匹配在一起。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var iPhoneXNode = SCNNode()

把这一行放在最后。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iPhoneXNode = iPhoneNode

iPhoneNodeChild

变换

IBAction的括号内,您可以放置​​指定按钮的功能。对于plusButtonTapped,声明一个常量,这是一个缩放操作,并将数量设置为2x,持续时间为2秒。让iPhoneXNode运行此操作。对minusButtonTapped重复相同的步骤,但不是将模型缩放2x,而是将其更改为0.5。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@IBAction func plusButtonTapped(_ sender: UIButton) {
    let scalePlus = SCNAction.scale(by: 2, duration: 2)
    iPhoneXNode.runAction(scalePlus)
}

@IBAction func minusButtonTapped(_ sender: UIButton) {
    let scaleMinus = SCNAction.scale(by: 0.5, duration: 2)
    iPhoneXNode.runAction(scaleMinus)
}

切换材质

对于最后一个按钮,我们将更改3D模型的漫反射材质。在我们的例子中,这意味着我们正在改变iPhone的屏幕。调用节点并访问其漫反射材质。然后,转到art.scnassets并找到不同的屏幕。对我们来说,它是AR-Screen.png

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@IBAction func placeScreenButtonTapped(_ sender: Any) {
    iPhoneXNode.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "art.scnassets/AR-Screen.png")
}

结论

在本节中,我们学习了如何在Storyboard中放置按钮并约束它们。此外,我们将它们连接到代码,这样我们就可以提供功能。到目前为止,您可以使用按钮执行许多令人惊叹的事情。

原文: https://designcode.io/arkit-buttons

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.02.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
将模型添加到场景中 - 在您的环境中显示3D内容
在最后几节中,我们能够检测到一个平面并显示一个焦点方块,以帮助我们为模型指定一个位置。我们也熟悉了热门测试和世界变换。现在,我们拥有显示虚拟对象所需的所有工具。在本教程中,我们将学习如何检索模型并使用按钮的触发器将其呈现在场景中。一旦显示,我们将隐藏焦点方块。
iOSDevLog
2019/06/17
7.2K0
将模型添加到场景中 - 在您的环境中显示3D内容
setNeedsLayout和layoutIfNeeded看我就懂!
前言: 开发得跟view打交道,我们也经常看到苹果官方代码有layout方法的相关调用,但是大家可知道什么时候调用,什么时候需要吗?针对网上大部分资料讲得不够清晰,我决定用Demo来讲解 一、layoutSubviews 不能直接调用这个方法。强制刷新布局,调用 setNeedsLayout,如果想马上刷新界面,调用layoutIfNeeded 二、setNeedsLayout跟layoutIfNeded setNeedsLayout调整视图的子视图的布局时,在应用程序的主线程调用此方法。此方法记录
Dwyane
2018/05/22
2.9K0
【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ;
韩曙亮
2023/03/27
7.9K0
【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图;
韩曙亮
2023/03/27
5.7K0
【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
iOS 10中如何搭建一个语音转文字框架
原文:Building a Speech-to-Text App Using Speech Framework in iOS 10
freesan44
2018/09/05
2.4K0
iOS 10中如何搭建一个语音转文字框架
iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)
【摘要】这篇文章,首先在第1节中介绍Block的定义,以及与C里面函数的对比。然后,第2节介绍实际开发中经常会用到的Block语法形式,以供读者日后查阅。只知道怎么用却不知什么时候用?所以随后的第3节将介绍Block的应用场景。然而,用Block不当导致了Crash?所以,第4节有必要了解Block捕获变量的特性,以及循环引用的解决。另外,千万不要懒,一碰到Block就weak,要区分哪些不会引起循环引用。然而,如果对Block的内存机制不熟悉,也会导致Crash,所以第5节会介绍Block的内存机制。学到这里已经够用了。然而,你却想进一步了解Block的实现机制?第6节将简单介绍下clang的编译与Block的实现及其原理。
陈满iOS
2018/09/10
2K0
iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)
100行代码搞定短视频App,终于可以和美女合唱了。
最近抖音最近又带了一波合唱的节奏,老板看到后果然又是要尽快跟进,希望隔壁公司加薪的时候他也能作出如此反应。
腾讯云音视频
2018/07/17
34.2K1
100行代码搞定短视频App,终于可以和美女合唱了。
图像检测-如何通过扫描图像来制造幻觉
今年,Apple发布了ARKit 2的新功能。其中之一就是图像检测。这是一个非常酷的功能,允许您在用户的环境中跟踪2D图像,并在其上放置增强现实内容。在本课程中,您将学习如何通过检测您喜欢的任何图像以及如何在呈现模型时更改模型的材质,将您自己的3D模型放置在任何对象之上。
iOSDevLog
2019/06/17
2.9K0
图像检测-如何通过扫描图像来制造幻觉
SceneKit 场景编辑器-为您的AR体验构建3D舞台
为了能够在应用程序中添加3D模型,我们需要一个3D渲染器框架。在本节中,我们将了解SceneKit的场景编辑器。这是一个很好的空间,可以帮助您可视化3D模型,编辑它,播放动画,模拟物理等。
iOSDevLog
2022/01/20
6.6K0
SceneKit 场景编辑器-为您的AR体验构建3D舞台
Xcode:处理故事板的更好方式 享受Interface Builder的提示和技巧
Apple在Xcode 8中对Interface Builder进行了很大的改进。使用大小类变得更加直观,缩放故事板的能力非常方便,Interface Builder中的完整预览功能非常棒。对于那些对使用Interface Builder犹豫不决的人来说,这可能会成为一个交易破坏者。
iOSDevLog
2018/12/28
1.8K0
【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )
项目创建流程 : ① 选择 Create a new Xcode project , ② 创建 Single View Application 项目 , ③ 设置项目信息 , ④ 设置代码路径并创建 ;
韩曙亮
2023/03/27
4.6K0
【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )
添加多个屏幕-创建格线布局
在上一节中,我们学习了如何使用按钮更改iPhone的屏幕。让我们进一步推动!我们将实现一个CollectionView,我们将能够切换到您想要的壁纸。该的CollectionView将是滚动的水平。
iOSDevLog
2019/06/17
3.7K0
添加多个屏幕-创建格线布局
为你的 iOS App 构建分离测试
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
顾翔
2019/12/12
5900
为你的 iOS App 构建分离测试
ARKit示例 - 第4部分:现实主义 - 照明和PBR
在本文中,我们将在场景中插入更逼真的虚拟内容。我们可以通过使用称为基于物理的渲染(PBR)的技术使用更详细的模型来实现这一点,并且还可以更准确地表示场景中的光照。
iOSDevLog
2018/09/20
1.4K0
ARKit示例 - 第4部分:现实主义 - 照明和PBR
VisionOS设计规范&生态建设 - ISUX发布版
在苹果WWDC2023中,发布了一款XR设备:Apple Vision Pro。苹果也在后续陆续发布了visionOS的SDK和设计规范了。开发者也可以正式开始visionOS的开发了。不会编程的小伙伴,也可以自己下载一个模拟器试着玩玩尝尝鲜。
腾讯ISUX
2023/07/25
4980
VisionOS设计规范&生态建设 - ISUX发布版
基础渲染系列(八)——反射
(温馨提示:本系列知识是循序渐进的,推荐第一次阅读的同学从第一章看起,链接在文章底部)
放牛的星星
2020/07/10
4.6K0
【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )
LaunchScreen.storyboard 界面 : 该界面不是用于展示应用程序的界面 ;
韩曙亮
2023/03/27
5.6K0
【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )
iOS版 使用ARKit和Swift创建交互式Domino游戏
在下面的教程中,我将向您展示如何使用Swift和ARKit制作有趣的Domino游戏。
iOSDevLog
2019/03/06
2.7K0
iOS版 使用ARKit和Swift创建交互式Domino游戏
Jekyll-Admin-Mac 开发纪要-左侧菜单栏
本文章文字大约 4500字,大概花费 10分钟阅读。本文章设计的图片比较多,流量党慎入!。
君赏
2018/08/31
2.6K2
Jekyll-Admin-Mac 开发纪要-左侧菜单栏
【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )
转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982
韩曙亮
2023/03/27
5.8K0
【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )
推荐阅读
将模型添加到场景中 - 在您的环境中显示3D内容
7.2K0
setNeedsLayout和layoutIfNeeded看我就懂!
2.9K0
【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
7.9K0
【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
5.7K0
iOS 10中如何搭建一个语音转文字框架
2.4K0
iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)
2K0
100行代码搞定短视频App,终于可以和美女合唱了。
34.2K1
图像检测-如何通过扫描图像来制造幻觉
2.9K0
SceneKit 场景编辑器-为您的AR体验构建3D舞台
6.6K0
Xcode:处理故事板的更好方式 享受Interface Builder的提示和技巧
1.8K0
【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )
4.6K0
添加多个屏幕-创建格线布局
3.7K0
为你的 iOS App 构建分离测试
5900
ARKit示例 - 第4部分:现实主义 - 照明和PBR
1.4K0
VisionOS设计规范&生态建设 - ISUX发布版
4980
基础渲染系列(八)——反射
4.6K0
【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )
5.6K0
iOS版 使用ARKit和Swift创建交互式Domino游戏
2.7K0
Jekyll-Admin-Mac 开发纪要-左侧菜单栏
2.6K2
【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )
5.8K0
相关推荐
将模型添加到场景中 - 在您的环境中显示3D内容
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档