# Build a Tilt-Controlled 3D Portal Experience in SwiftUI - Spline Advanced | Feature Deep Dive - Spline Academy (https://spline.design/academy/tutorials/build-a-tilt-controlled-3d-portal-experience-in-swiftui)

> Learn how to build a 3D portal that reacts as you tilt your device. 📲

1. [Academy](https://spline.design/academy)
2. [Courses](https://spline.design/academy/collections)
3. [Spline Advanced | Feature Deep Dive](https://spline.design/academy/collections/spline-advanced-feature-deep-dive)
4. Build a Tilt-Controlled 3D Portal Experience in SwiftUI

# Build a Tilt-Controlled 3D Portal Experience in SwiftUI

Lesson 17 of 17Spline 3DAdvanced14 min

Learn how to build a 3D portal that reacts as you tilt your device. 📲

In this tutorial, we’ll create and connect a Spline 3D portal to SwiftUI and use the iPhone’s gyroscope to shift the portal’s perspective in real time. It’s a fun and approachable way to bring immersive 3D moments into your iOS apps.

Let’s go! 🚀

Docs: <https://docs.spline.design/exporting-your-scene/apple-platform/code-api-for-swift-ui>

## Related resources

- [SwiftUI PortalTemplate](https://app.spline.design/academy/tutorials/build-a-tilt-controlled-3d-portal-experience-in-swiftui?redirect-duplicate-template-uuid=864989c6-d43e-45f4-bc54-8e9193959963&is-2d-file=false)
- [Native 3D Embeds for iOSDocument](https://docs.spline.design/exporting-your-scene/apple-platform/native-3d-embeds-for-i-os)
- [Code API for SwiftUIDocument](https://docs.spline.design/exporting-your-scene/apple-platform/code-api-for-swift-ui)

## Overview

- Spline 3D
- 14 min
- Advanced

## Last lesson

That’s the end of Spline Advanced | Feature Deep Dive.

[Back to the course](https://spline.design/academy/collections/spline-advanced-feature-deep-dive)

[Spline](https://spline.design/)

The 3D and 2D editor for teams and their agents. Ship to the web, iOS and Android.

#### Ask AI about Spline

#### Products

- [3D Design](https://spline.design/3d-design)
- [Hana](https://spline.design/hana)
- [Omma](https://omma.build)
- [AI 3D Generation](https://spline.design/ai-generate)
- [Spline MCP](https://spline.design/mcp)
- [Pricing](https://spline.design/pricing)
- [Enterprise](https://spline.design/enterprise)

#### Runtimes

- [Web](https://spline.design/web)
- [iOS](https://spline.design/ios)
- [Android](https://spline.design/android)

#### Apps

- [Download](https://spline.design/download)
- [Spline Mirror](https://spline.design/spline-mirror)
- [Download Spline Mirror](https://spline.design/download-mirror)

#### Learn

- [Docs](https://docs.spline.design/)
- [Academy](https://spline.design/academy)
- [Spline API](https://www.npmjs.com/package/@splinetool/runtime)
- [Solutions](https://spline.design/solutions)

#### Community

- [Spline Community](https://community.spline.design)
- [Blog](https://spline.design/blog)
- [Changelog](https://spline.design/changelog)
- [Education](https://spline.design/education)
- [Contra](https://spline.design/contra)
- [Affiliate](https://spline.design/affiliate)

#### Company

- [Customers](https://spline.design/customers)
- [Careers](https://www.ycombinator.com/companies/spline/jobs)
- [Security](https://spline.design/security)

#### Legal

- [Terms & Conditions](https://spline.design/terms)
- [Privacy](https://spline.design/privacy)

#### Contact

- [help@spline.design](mailto:help@spline.design)
- [jobs@spline.design](mailto:jobs@spline.design)

© 2026 - Spline, Inc.
