日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

SwiftUI 使用 visualEffect 視圖修飾符

來源: 責編: 時間:2024-01-02 09:31:29 200觀看
導讀前言在 WWDC 23 中,SwiftUI 引入了一個名為 visualEffect 的新視圖修飾符。此修飾符允許我們通過訪問特定視圖的布局信息來附加一組可動畫化的視覺效果。下面我們將學習如何在 SwiftUI 中使用新的 visualEffect 視圖修

前言

在 WWDC 23 中,SwiftUI 引入了一個名為 visualEffect 的新視圖修飾符。此修飾符允許我們通過訪問特定視圖的布局信息來附加一組可動畫化的視覺效果。下面我們將學習如何在 SwiftUI 中使用新的 visualEffect 視圖修飾符。kk128資訊網(wǎng)——每日最新資訊28at.com

介紹 visualEffect

讓我們從使用 visualEffect 視圖修飾符的最簡單示例開始。kk128資訊網(wǎng)——每日最新資訊28at.com

struct ContentView: View {    var body: some View {        Text("Hello World!")            .visualEffect { initial, geometry in                initial.offset(geometry.size)            }    }}

正如你在上面的示例中所看到的,我們定義了一個文本視圖并附加了 visualEffect 視圖修飾符。每當你附加 visualEffect 視圖修飾符時,你應該指定效果閉包。這是你應用所有需要的效果的地方。kk128資訊網(wǎng)——每日最新資訊28at.com

效果閉包為你提供了兩個參數(shù)。第一個是附加到視圖的效果集合的初始狀態(tài)。它是 EmptyVisualEffect 類型的實例。我們使用此實例來附加額外的效果。第二個參數(shù)是包含視圖的所有布局信息的 GeometryProxy 類型的實例,比如 frame、安全區(qū)域等。kk128資訊網(wǎng)——每日最新資訊28at.com

什么是視覺效果?

視覺效果是可以改變視圖的視覺外觀但不影響其布局的任何東西。在 SwiftUI 框架的先前版本中,我們有視圖修飾符,如縮放、偏移、模糊、對比度、飽和度、不透明度、旋轉等。它們?nèi)慷际且曈X效果,并且現(xiàn)在符合 VisualEffect 協(xié)議。你可以在 visualEffect 閉包中使用其中任何一個。kk128資訊網(wǎng)——每日最新資訊28at.com

struct ContentView: View {        var body: some View {        Text("Hello World!")            .visualEffect { initial, geometry in                initial                    .blur(radius: 8)                    .opacity(0.9)                    .scaleEffect(.init(width: 2, height: 2))            }    }}

像 frame 和 padding 這樣的東西不是視覺效果,你不能在 visualEffect 閉包中使用它們,因為它們修改了視圖層次結構的布局。kk128資訊網(wǎng)——每日最新資訊28at.com

visualEffect 修飾符視覺效果

visualEffect 視圖修飾符是完成舊事物的新方法。我們可以使用舊視圖修飾符修改視圖的不透明度和偏移。如果你不需要布局信息,你可以繼續(xù)使用它們。新方法的唯一區(qū)別是我們通過從 GeometryProxy 提供的布局信息計算視圖的視覺效果的方式來限定視圖的視覺效果。kk128資訊網(wǎng)——每日最新資訊28at.com

visualEffect 視圖修飾符支持可動畫化的值。因此,你可以繼續(xù)使用它根據(jù)視圖在視圖層次結構中的框架和邊界來動畫化視圖的視覺外觀。kk128資訊網(wǎng)——每日最新資訊28at.com

struct ContentView: View {    @State private var isScaled = false        var body: some View {        VStack {            Button("Scale") {                isScaled.toggle()            }                        Text("Hello World!")                .visualEffect { initial, geometry in                    initial.scaleEffect(                        CGSize(                            width: isScaled ? 2 : 1,                            height: isScaled ? 2 : 1                        )                    )                }                .animation(.smooth, value: isScaled)        }    }}

完整的代碼

import SwiftUIstruct ContentView: View {    var body: some View {        Text("Hello World!")            .visualEffect { initial, geometry in                initial.offset(geometry.size)            }    }}struct ContentViewWithEffects: View {    var body: some View {        Text("Hello World!")            .visualEffect { initial, geometry in                initial                    .blur(radius: 8)                    .opacity(0.9)                    .scaleEffect(.init(width: 2, height: 2))            }    }}struct ContentViewWithAnimation: View {    @State private var isScaled = false        var body: some View {        VStack {            Button("Scale") {                isScaled.toggle()            }                        Text("Hello World!")                .visualEffect { initial, geometry in                    initial.scaleEffect(                        CGSize(                            width: isScaled ? 2 : 1,                            height: isScaled ? 2 : 1                        )                    )                }                .animation(.smooth, value: isScaled)        }    }}struct ContentView_Previews: PreviewProvider {    static var previews: some View {        ContentView()        ContentViewWithEffects()        ContentViewWithAnimation()    }}

將上述代碼放入 Swift 文件中,然后在 Xcode 中打開并運行,選擇合適的模擬器。請注意,由于視覺效果和動畫效果,最好在模擬器上查看效果。kk128資訊網(wǎng)——每日最新資訊28at.com

總結

本文章介紹了在 SwiftUI 中引入的新視圖修飾符 visualEffect。該修飾符允許我們通過訪問特定視圖的布局信息來附加一組可動畫的視覺效果。給出了一些使用 visualEffect 的簡單示例,包括如何使用效果閉包以及如何應用一些常見的視覺效果(例如模糊、透明度、縮放)。kk128資訊網(wǎng)——每日最新資訊28at.com

此外,還提到了 GeometryProxy 類型的使用,以及 visualEffect 對可動畫值的支持,使得可以根據(jù)視圖的幀和邊界來動態(tài)調(diào)整視覺外觀。kk128資訊網(wǎng)——每日最新資訊28at.com

最后,指出了 visualEffect 修飾符在向后兼容性方面的注意事項,并建議在不需要布局信息的情況下繼續(xù)使用傳統(tǒng)的視圖修飾符。kk128資訊網(wǎng)——每日最新資訊28at.com

kk128資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-55248-0.htmlSwiftUI 使用 visualEffect 視圖修飾符

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: SwiftUI 使用 visualEffect 視圖修飾符

下一篇: 深入了解Java 8 新特性:Optional類的實踐應用

標簽:
  • 熱門焦點
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺競技

    旗艦機基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據(jù)博主數(shù)碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 影音體驗是真的強 簡單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • iPhone賣不動了!蘋果股價創(chuàng)年內(nèi)最大日跌幅:市值一夜蒸發(fā)萬億元

    8月5日消息,今天凌晨美股三大指數(shù)高開低走集體收跌,道指跌0.41%;納指跌0.36%;標普500指數(shù)跌0.52%。熱門科技股也都變化極大,其中蘋果報181.99美元,跌4.8%,創(chuàng)
  • 十個簡單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強大而靈活的功能,用于修改或增強函數(shù)或類的行為。裝飾器本質(zhì)上是一個函數(shù),它接受另一個函數(shù)或類作為參數(shù),并返回一個新的函數(shù)或類。它們通常用
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強勢崛起,到2018年的“頭騰
  • 中國家電海外掘金正當時|出海專題

    作者|吳南南編輯|胡展嘉運營|陳佳慧出品|零態(tài)LT(ID:LingTai_LT)2023年,出海市場戰(zhàn)況空前,中國創(chuàng)業(yè)者在海外紛紛摩拳擦掌,以期能夠把中國的商業(yè)模式、創(chuàng)業(yè)理念、戰(zhàn)略打法輸出海外,他們依
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經(jīng)無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的“網(wǎng)紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內(nèi)直播,
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續(xù)發(fā)布了最新的折疊屏旗艦,尤其號榮耀Magi
  • 三星顯示已開始為AR設備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報道,隨著蘋果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個重要的競爭領域,對顯示屏這一關
Top 主站蜘蛛池模板: 临沂市| 清远市| 英吉沙县| 剑河县| 安远县| 丘北县| 高邮市| 库伦旗| 宜兴市| 大荔县| 大港区| 公安县| 苍山县| 航空| 勃利县| 陇南市| 成武县| 古浪县| 农安县| 上栗县| 汶川县| 米易县| 阿拉善右旗| 天水市| 驻马店市| 叶城县| 古交市| 资中县| 渭源县| 长乐市| 仙居县| 松滋市| 盐城市| 布拖县| 涟源市| 安远县| 堆龙德庆县| 同心县| 安仁县| 延吉市| 霍林郭勒市|