前言
- 成为VisionOS开发者,最少要掌握SwiftUI、RealityKit、ARKit和Accessibility这四块儿相关的技术
图片.png
-
需要的工具
图片.png
SwiftUI布局入门篇
在 SwiftUI 中,采用了声明式的方式来定义用户界面。开发者通过描述每个视图的内容、布局和样式,而不需要直接操作底层的 UI 元素或控件。
最常用的构建布局的视图当属:HStack、VStack、ZStack 莫属。
布局样式.png
废话不多说直接上总结:
- 将 HStack、VStack、ZStack 视为整体: 这些布局容器可以将它们包含的视图组合在一起,并按照水平、垂直或层叠方式进行排列。
- 使用填充布局和间距: 通过在布局容器中使用 leading、trailing、top、bottom 和 Spacer 等修饰符,可以控制视图之间的间距和相对位置。
- 牢记布局法则: 包括对齐、间距、层次等布局规则,这些规则可以帮助你创建一致和美观的界面。
- 使用 .position 和 .offset 调整位置
- 修饰符的顺序有逻辑: 在应用修饰符时,它们的顺序很重要,因为它们会按顺序应用到视图上
SwiftUI 接入 UIKit
UIViewControllerRepresentable
桥接 UIViewController, UIViewControllerRepresentable 协议。
这个协议有两个必须实现的方法,就是 makeUIView 和 updateUIView
public protocol UIViewRepresentable : View where Self.Body == Never {
//UIView的初始化方法,相当于init方法
func makeUIView(context: Self.Context) -> Self.UIViewType
//当 SwiftUI 当状态发生变化),它会调用此方法。该方法负责将最新的数据更新到 UIView 实例中,以确保视图保持同步。
func updateUIView(_ uiView: Self.UIViewType, context: Self.Context)
}
- SwiftUI 从 UIKit 中获取值
在 UIViewControllerRepresentable 协议中,还有一个东西:
public protocol UIViewRepresentable : View where Self.Body == Never {
//创建并返回一个协调器实例,该实例负责管理视图的交互逻辑,比如用于将 UIKit 控件的委托方法与 SwiftUI 视图的行为进行关联
func makeCoordinator() -> Self.Coordinator
}
建议仅支持 iOS13 后的 App,完全使用SwiftUI 框架来实现页面。
初识 Vision Pro
Vision Pro@2x.png
创建项目
Xcode创建
在创建新的 visionOS 应用程序时,可以从配置对话框选择应用程序的初始场景类型。如果应用程序主要显示 2D 内容,请选择窗口作为初始场景类型。如果应用程序主要显示 3D 内容,请选择一个体积。此外,还可以添加身临其境的场景,将内容放置在人物的周围环境中。
场景模式
在为 VisionOS 构建应用程序时,请根据应用的需求场景选择。该系统提供了多种显示 3D 内容的方法,包括在现有窗口中、在体积中以及在沉浸式空间中。选择最适合您的应用和您提供的内容的选项。
场景模式.png
氛围样式
氛围样式是app的呈现形式,分为.mixed, .progressive,.full三种,可以通过一个图来理解:
ImmersionStyle@2x.png