欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用SwiftUI實(shí)現(xiàn)3D Scroll滾動(dòng)效果的實(shí)現(xiàn)代碼

 更新時(shí)間:2020年04月27日 17:01:49   作者:CodingSuccess  
這篇文章主要介紹了用SwiftUI實(shí)現(xiàn)3D Scroll效果的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)

本文介紹了用SwiftUI實(shí)現(xiàn)3D Scroll效果的實(shí)現(xiàn)代碼,分享給大家,具體如下:

我們預(yù)覽下今天要實(shí)現(xiàn)的 3D scroll 效果。學(xué)完本教程后,你就可以在你的 App 中把這種 3D 效果加入任何自定義的 SwiftUI 視圖。下面我們來開始本教程的學(xué)習(xí)。

入門

首先,創(chuàng)建一個(gè)新的 SwiftUI 視圖。為了舉例說明,在這個(gè)新視圖中,我會(huì)展示一個(gè)有各種顏色的矩形列表,并把新視圖命名為 ColorList 。

import SwiftUI

struct ColorList: View {
 var body: some View {
  Text("Hello, World!")
 }
}

struct ColorList_Previews: PreviewProvider {
 static var previews: some View {
  ColorList()
 }
}

顏色數(shù)據(jù)

在視圖的結(jié)構(gòu)體里,添加一個(gè)用于記錄顏色的變量。

var colors: [Color]

實(shí)現(xiàn)這個(gè)列表

body 變量的內(nèi)部,刪除掉占位 Text 。在 ScrollView 嵌套中添加一個(gè) HStack ,如下:

var body: some View {
 ScrollView(.horizontal, showsIndicators: false) {
  HStack(alignment: .center, spacing: 50) {

  }
 }
}

展示矩形

我們使用 ForEachHStack 內(nèi)部根據(jù) colors 中的數(shù)據(jù)分別創(chuàng)建不同顏色的矩形。此外,我修改了矩形的 frame,讓它看起來與傳統(tǒng) UI 布局更像一些。

var body: some View {
 ScrollView(.horizontal, showsIndicators: false) {
  HStack(alignment: .center, spacing: 20) {
   ForEach(colors, id: \.self) { color in
    Rectangle()
     .foregroundColor(color)
     .frame(width: 200, height: 300, alignment: .center)
   }
  }
 }
}

在 Preview 結(jié)構(gòu)體中傳入如下的顏色參數(shù):

struct ColorList_Previews: PreviewProvider {
 static var previews: some View {
  ColorList(colors: [.blue, .green, .orange, .red, .gray, .pink, .yellow])
 }
}

你可以看到下圖中的效果:

增加 3D 效果

首先,把 Rectangle 嵌套在 GeometryReader 中。這樣的話,當(dāng) Rectangle 在屏幕上移動(dòng)的時(shí)候,我們就可以獲得其 frame 的引用。

var body: some View {
 ScrollView(.horizontal, showsIndicators: false) {
  HStack(alignment: .center, spacing: 230) {
   ForEach(colors, id: \.self) { color in
    GeometryReader { geometry in
     Rectangle()
      .foregroundColor(color)
      .frame(width: 200, height: 300, alignment: .center)
    }
   }
  }
 }
}

根據(jù) GeometryReader 的用法要求,我們需要修改上面定義的 HStack 的 spacing 屬性。

Rectangle 中加入下面這行代碼。

.rotation3DEffect(Angle(degrees: (Double(geometry.frame(in: .global).minX) - 210) / -20), axis: (x: 0, y: 1.0, z: 0))

當(dāng) Rectangle 在屏幕上移動(dòng)時(shí),這個(gè)方法的 Angle 參數(shù)會(huì)發(fā)生改變。請(qǐng)重點(diǎn)看 .frame(in:) 這個(gè)函數(shù),你可以獲取 RectangleCGRect 屬性 minX 變量來計(jì)算角度。

axis 參數(shù)是一個(gè)元組類型,它定義了在使用你傳入的角度參數(shù)時(shí),哪一個(gè)坐標(biāo)軸要發(fā)生改變。在本例中,是 Y 軸。

rotation3DEffect() 方法的文檔可以在蘋果官方網(wǎng)站的 這里 找到。

下一步,把這個(gè)案例跑起來。當(dāng)矩形在屏幕上移動(dòng)時(shí),你可以看到它們?cè)谛D(zhuǎn)。

我還修改了矩形的 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 in
     GeometryReader { geometry in
      Rectangle()
       .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)
  }
 }
}

結(jié)束

到此這篇關(guān)于用SwiftUI實(shí)現(xiàn)3D Scroll效果的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)SwiftUI實(shí)現(xiàn)3D Scroll內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Swift編程中實(shí)現(xiàn)希爾排序算法的代碼實(shí)例

    Swift編程中實(shí)現(xiàn)希爾排序算法的代碼實(shí)例

    希爾排序是對(duì)插入排序的一種改進(jìn)版本,算法本身并不穩(wěn)定,存在優(yōu)化空間,這里我們來講一下希爾排序的大體思路及Swift編程中實(shí)現(xiàn)希爾排序算法的代碼實(shí)例
    2016-07-07
  • iOS開發(fā)中Swift 指紋驗(yàn)證功能模塊實(shí)例代碼

    iOS開發(fā)中Swift 指紋驗(yàn)證功能模塊實(shí)例代碼

    本文給大家分享ios調(diào)用touchid代碼塊,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下把
    2017-03-03
  • 解析Swift語言面相對(duì)象編程中的繼承特性

    解析Swift語言面相對(duì)象編程中的繼承特性

    這篇文章主要介紹了解析Swift語言面相對(duì)象編程中的繼承特性,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • 詳解Swift?中的幻象類型

    詳解Swift?中的幻象類型

    讓我們來看看一種技術(shù),它可以讓我們利用?Swift?的類型系統(tǒng)在編譯時(shí)執(zhí)行更多種類的數(shù)據(jù)驗(yàn)證消除更多潛在的歧義來源,并幫助我們?cè)谡麄€(gè)代碼庫中保持類型安全,通過使用幻象類型(phantom?types),對(duì)Swift?幻象類型相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-05-05
  • Swift UIButton使用教程

    Swift UIButton使用教程

    這篇文章主要介紹了Swift UIButton的使用方法,幫助大家更好的理解和學(xué)習(xí)swift編程,感興趣的朋友可以了解下
    2020-09-09
  • swift指針及內(nèi)存管理內(nèi)存綁定實(shí)例詳解

    swift指針及內(nèi)存管理內(nèi)存綁定實(shí)例詳解

    這篇文章主要為大家介紹了swift指針及內(nèi)存管理內(nèi)存綁定實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Swift操作Quartz 2D進(jìn)行簡(jiǎn)單的繪圖與坐標(biāo)變換的教程

    Swift操作Quartz 2D進(jìn)行簡(jiǎn)單的繪圖與坐標(biāo)變換的教程

    這篇文章主要介紹了Swift操作Quartz 2D進(jìn)行簡(jiǎn)單的繪圖與坐標(biāo)變換的教程,Quartz 2D是Core Graphics框架中的一個(gè)重要組件,經(jīng)常被Mac OS或和iOS開發(fā)者用來繪圖,需要的朋友可以參考下
    2016-04-04
  • swift中AnyObject和Any的介紹與區(qū)別詳解

    swift中AnyObject和Any的介紹與區(qū)別詳解

    雖然使用swift開發(fā)了一段時(shí)間,但是感覺對(duì)一些基礎(chǔ)的東西了解不是比較透徹,在查詢了許多資料以后還是打算自己動(dòng)手記錄一下,下面這篇文章主要給大家介紹了關(guān)于swift中AnyObject和Any的介紹與區(qū)別的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動(dòng)效果

    Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Swift實(shí)現(xiàn)3D輪播圖效果

    Swift實(shí)現(xiàn)3D輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了Swift實(shí)現(xiàn)3D輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02

最新評(píng)論