SwiftUI之深入解析如何实现3D Scroll效果
生活随笔
收集整理的這篇文章主要介紹了
SwiftUI之深入解析如何实现3D Scroll效果
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、SwiftUI 視圖創建
- 首先,創建一個新的 SwiftUI 視圖,為了舉例說明,在這個新視圖中,會展示一個有各種顏色的矩形列表,并把新視圖命名為 ColorList:
二、顏色
- 在視圖結構的頂部,添加一個變量來記錄顏色:
三、實現列表
- 在 body 變量的內部,刪除掉占位 Text;在 ScrollView 嵌套中添加一個 HStack,如下:
四、展示矩形
- 使用 ForEach 在 HStack 內部根據 colors 中的數據分別創建不同顏色的矩形。
- 此外,修改矩形的 frame,讓它看起來與傳統 UI 布局更像一些:
- 在 Preview 結構體中傳入如下的顏色參數:
- 可以看到如下效果:
五、增加 3D 效果
- 首先,把 Rectangle 嵌套在 GeometryReader 中,這樣的話,當 Rectangle 在屏幕上移動的時候,就可以獲得其 frame 的引用:
- 根據 GeometryReader 的用法要求,需要修改上面定義的 HStack 的 spacing 屬性,在 Rectangle 中加入下面這行代碼:
- 當 Rectangle 在屏幕上移動時,這個方法的 Angle 參數會發生改變。請重點看 .frame(in:) 這個函數,可以獲取 Rectangle 的 CGRect 屬性 minX 變量來計算角度。
- axis 參數是一個元組類型,它定義了在使用傳入的角度參數時,哪一個坐標軸要發生改變,在本例中是 Y 軸。
- rotation3DEffect(_:axis??anchorZ:perspective:) 說明:
-
- 圍繞給定的旋轉軸在三維空間旋轉視圖,然后渲染輸出;
-
- 參數說明:
-
-
- angle:旋轉視圖的角度;
-
-
-
- axis:指定旋轉軸的 x, y 和 z 元素;
-
-
-
- anchor:帶有默認中心點的位置,它定義了 3D 空間中錨定旋轉的一個點;
-
-
-
- anchorZ:默認值為 0 的位置,它定義了 3D 空間中錨定旋轉的一個點;
-
-
-
- perspective:相對消失點默認為1。
-
-
- 使用 rotation3deeffect (_:axis??anchorZ:perspective:) 將視圖圍繞給定的旋轉軸進行三維旋轉,并可選地將視圖定位于自定義的顯示順序和透視圖。如下所示,文本圍繞 y 軸旋轉 45?,最前面(默認 zIndex )和默認透視圖(1):
- 運行程序,當矩形在屏幕上移動時,可以看到它們在旋轉。修改矩形的 cornerRadius 屬性,加上投影效果,可以讓它更美觀:
六、最終示例
struct ColorList: View {var colors:[Color]var body: some View {ScrollView(.horizontal, showsIndicators: false) {HStack(alignment: .center, spacing: 230) {ForEach(colors, id: \.self) { color inGeometryReader { geometry inRectangle().foregroundColor(color).frame(width: 200, height: 300, alignment: .center).cornerRadius(16).shadow(color: Color.black.opacity(0.2), radius: 20, x: 0, y: 0).rotation3DEffect(Angle(degrees: (Double(geometry.frame(in: .global).minX) - 210) / -20), axis: (x: 0, y: 1.0, z: 0))}}}.padding(.horizontal, 210)}} }總結
以上是生活随笔為你收集整理的SwiftUI之深入解析如何实现3D Scroll效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS逆向之深入解析如何使用Theos开
- 下一篇: Swift之深入解析如何自定义操作符