Gần đây, Apple đã phát hành Vision Pro và tôi thật may mắn khi trở thành chủ sở hữu đầy tự hào của nó. Kể từ đó, tôi đã tham gia sâu vào việc phát triển ứng dụng của mình và khám phá nhiều ứng dụng cũng như xu hướng khác nhau trong Vision Pro App Store.
Một điều thu hút sự chú ý của tôi là các ứng dụng mới ra mắt hàng ngày nhưng chỉ một số ứng dụng phù hợp với trải nghiệm thực tế ảo sống động. Tôi đoán nhiều nhà phát triển gặp khó khăn trong việc tìm tài liệu và ví dụ về các tính năng của Vision Pro. Tuy nhiên, việc sử dụng các khả năng của Vision Pro có thể làm nổi bật ứng dụng của bạn và cung cấp cho người dùng trải nghiệm nâng cao.
Trong bài viết này, tôi sẽ chia sẻ một số mẹo và thủ thuật mà tôi đã khám phá được khi tạo ứng dụng của mình. Những mẹo này không chỉ giúp ứng dụng của bạn nổi bật mà còn đảm bảo khả năng tích hợp liền mạch và cảm giác nguyên bản trong VisionOS.
Tôi chắc rằng bạn đã nhận thấy rằng khi xem video hoặc ảnh, nền phía sau cửa sổ bị tối đi, trong cài đặt nó được gọi là "tự động làm mờ". Để có được hiệu ứng tương tự, bạn cần sử dụng .preferredSurroundingsEffect(.systemDark)
trên chế độ xem của mình, sau đó không gian xung quanh người dùng sẽ tối đi và cửa sổ của bạn vẫn sáng, điều này sẽ giúp tập trung vào nội dung.
Khi xem video hoặc nội dung, bạn muốn người dùng không bị phân tâm và tạo hiệu ứng cửa sổ lơ lửng trong không trung, vì điều này Apple đã cung cấp cho chúng ta khả năng ẩn thanh dưới cùng của cửa sổ dùng để di chuyển hoặc đóng cửa sổ hiện tại. Với .persistentSystemOverlays(.hidden)
bạn có thể ẩn thanh điều khiển này trên cửa sổ của mình, nó sẽ biến mất cùng với hoạt ảnh mặc định và chỉ xuất hiện khi người dùng tương tác với cửa sổ.
Nếu mở ứng dụng Apple TV tiêu chuẩn và bật phim, bạn sẽ nhận thấy cửa sổ phim có hình ảnh phản chiếu thay đổi theo từng khung hình, mang lại hiệu ứng sống động hơn. Để có được hiệu ứng phát sáng xung quanh video của mình, bạn cần sử dụng VideoPlayerComponent
và bật isPassthroughTintingEnabled
, khi đó hiệu ứng sẽ giống như trong Apple TV hoặc HBO Max. Đây là những gì tài liệu nói:
Điều này nhằm cho phép pha màu chuyển tiếp trong khi phát lại video hiển thị xung quanh video, lấy màu trung bình của khung hình và pha màu chuyển tiếp bằng màu đó để nhấn mạnh video.
Bạn có thể muốn ngăn người dùng thay đổi kích thước cửa sổ, có một cách để làm điều đó:
onAppear { guard let windowScene = UIApplication.shared.connectedScenes.first as?UIWindowScene else { return } windowScene.requestGeometryUpdate(.Vision(resizingRestrictions: UIWindowScene.ResizingRestrictions.none)) }
Bạn cũng có thể chỉ định cài đặt kích thước bổ sung trong phương thức này. Chữ ký đầy đủ của phương thức trông như thế này:
windowScene.requestGeometryUpdate(.Vision(size:, minimumSize:, maximumSize:, resizingRestrictions:))
Nếu ứng dụng của bạn sử dụng không gian sống động và bạn không muốn người dùng nhìn thấy bàn tay của họ hoặc bạn muốn thay thế chúng bằng bàn tay ảo, như được thực hiện trong AmazeVR, thì bạn cần sử dụng .upperLimbVisibility(.hidden)
Tôi chắc rằng bạn đã từng thấy các thanh bên trong ứng dụng VisionOS trông giống như TabBars
. Apple đã giới thiệu phương pháp View
mới cho VisionOS cho phép bạn "mở rộng" cửa sổ và thêm đồ trang trí ở hai bên của nó.
.ornament( visibility: .visible, attachmentAnchor: .scene(.bottom), contentAlignment: .center ) { HStack { Button("Play", systemImage: "play.fill") { } Button("Stop", systemImage: "stop.fill") { } } .labelStyle(.iconOnly) .padding(.all) .glassBackgroundEffect() }
Một sự thật thú vị mà tôi có thể xác minh bằng thực nghiệm là các phương pháp của CMMotionManager chỉ hoạt động trong không gian chìm đắm chứ không hoạt động ở chế độ xem cửa sổ thông thường.
VisionOS cung cấp nhiều công cụ để tạo ra các ứng dụng phong phú đưa người dùng vào thế giới ảo và khiến họ cảm thấy mình là một phần của thế giới đó. Mặc dù ngày càng có nhiều ứng dụng được phát hành cho Vision Pro nhưng chỉ một số ít sử dụng đầy đủ các tính năng của nó. Đó là lúc cơ hội để bạn phân biệt xuất hiện - hãy sử dụng chúng và tận dụng lợi thế. Thật không may, các nhà phát triển gặp khó khăn trong việc tìm kiếm tài liệu và ví dụ dễ tiếp cận. Đó là lý do tại sao tôi viết bài viết này. Tôi hy vọng lời khuyên của tôi sẽ giúp bạn làm cho ứng dụng của bạn tốt hơn.