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

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

SwiftUI 在 WWDC 24 之后的新變化

來源: 責編: 時間:2024-06-25 17:20:33 246觀看
導讀前言WWDC 24 已經到來,我們有很多內容要討論。每年,SwiftUI 都會通過引入更多功能來趕上 UIKit。今年也不例外。讓我們深入了解 SwiftUI 框架引入的新功能。我首先要提到的主要變化是 App、Scene 和 View 協議的 @MainA

前言

WWDC 24 已經到來,我們有很多內容要討論。每年,SwiftUI 都會通過引入更多功能來趕上 UIKit。今年也不例外。讓我們深入了解 SwiftUI 框架引入的新功能。Y9128資訊網——每日最新資訊28at.com

我首先要提到的主要變化是 App、Scene 和 View 協議的 @MainActor 隔離。這可能會破壞你的代碼,所以請記住這一點。Y9128資訊網——每日最新資訊28at.com

視圖集合

SwiftUI 為 Group 和 ForEach 視圖引入了新的重載,允許我們創建自定義容器,如 List 或 TabView。Y9128資訊網——每日最新資訊28at.com

struct AppStoreView<Content: View>: View {    @ViewBuilder var content: Content        var body: some View {        VStack {            Group(subviewsOf: content) { subviews in                HStack {                    if !subviews.isEmpty {                        subviews[0]                    }                                        if subviews.count > 1 {                        subviews[1]                    }                }                                if subviews.count > 2 {                    VStack {                        subviews[2...]                    }                }            }        }    }}

如上例所示,我們使用帶有新初始化器的 Group 視圖,允許我們訪問通過 @ViewBuilder 閉包傳遞的內容視圖的子視圖。SwiftUI 引入了新的 Subview 和 SubviewsCollection 類型,提供了對真實視圖的代理訪問。Y9128資訊網——每日最新資訊28at.com

新的標簽欄體驗

使用新的 Tab 類型,SwiftUI 提供了新的可定制標簽欄體驗,帶有流暢過渡到側邊欄。Y9128資訊網——每日最新資訊28at.com

enum Destination: Hashable {    case home    case search    case settings    case trends}struct RootView: View {    @State private var selection: Destination = .home        var body: some View {        TabView {            Tab("home", systemImage: "home", value: .home) {                HomeView()            }                        Tab("search", systemImage: "search", value: .search) {                SearchView()            }                        TabSection("Other") {                Tab("trends", systemImage: "trends", value: .trends) {                    TrendsView()                }                Tab("settings", systemImage: "settings", value: .settings) {                    SettingsView()                }            }            .tabViewStyle(.sidebarAdaptable)        }    }}

如上例所示,我們使用新的 Tab 類型來定義標簽。我們還在 TabSection 實例上使用 tabViewStyle 視圖修飾符,將特定的標簽部分分組并移動到側邊欄。Y9128資訊網——每日最新資訊28at.com

英雄動畫

SwiftUI 引入了 matchedTransitionSource 和 navigationTransition,我們可以在任何 NavigationLink 實例中配對使用。Y9128資訊網——每日最新資訊28at.com

struct HeroAnimationView: View {    @Namespace var hero        var body: some View {        NavigationStack {            NavigationLink {                DetailView()                    .navigationTransition(.zoom(sourceID: "myId", in: hero))            } label: {                ThumbnailView()            }            .matchedTransitionSource(id: "myId", in: hero)        }    }}

這使我們能夠在 NavigationStack 內從一個視圖導航到另一個視圖時,使用相同的標識符和命名空間創建平滑的過渡。Y9128資訊網——每日最新資訊28at.com

滾動位置

新的 ScrollPosition 類型與 scrollPosition 視圖修飾符配對,允許我們讀取 ScrollView 實例的精確位置。我們還可以使用它編程地滾動到滾動內容的特定點。Y9128資訊網——每日最新資訊28at.com

struct ScrollPositionExample: View {    @State private var position: ScrollPosition = .init(point: .zero)        var body: some View {        ScrollView {            ForEach(1..<1000) { item in                Text(item.formatted())            }                        Button("jump to top") {                position = ScrollPosition(point: .zero)            }        }        .scrollPosition($position)    }}

Entry 宏

新的 Entry 宏允許我們快速引入環境值、聚焦值、容器值等,無需樣板代碼。讓我們看看在 Entry 宏之前我們如何定義環境值。Y9128資訊網——每日最新資訊28at.com

struct ItemsPerPageKey: EnvironmentKey {    static var defaultValue: Int = 10}extension EnvironmentValues {    var itemsPerPage: Int {        get { self[ItemsPerPageKey.self] }        set { self[ItemsPerPageKey.self] = newValue }    }}

現在,我們可以通過使用 Entry 宏來簡化代碼。Y9128資訊網——每日最新資訊28at.com

extension EnvironmentValues {    @Entry var itemsPerPage: Int = 10}

預覽

新的 Previewable 宏允許我們在預覽中引入狀態,而無需將其包裝到額外的包裝視圖中。Y9128資訊網——每日最新資訊28at.com

#Preview("toggle") {    @Previewable @State var toggled = true    return Toggle("Loud Noises", isOn: $toggled)}

其他

SwiftUI 框架的下一版本包括許多新 API,如窗口推送、TextField 和 TextEditor 視圖中的文本選擇觀察、搜索焦點監控、自定義文本渲染、新的 MeshGradient 類型等等,我無法在一篇文章中涵蓋所有內容。Y9128資訊網——每日最新資訊28at.com

總結

在 WWDC 24 上,SwiftUI 再次通過引入更多新功能來提升其成熟度,以趕上 UIKit。今年的主要變化包括 @MainActor 隔離、視圖集合的新重載、新的可定制標簽欄體驗、英雄動畫、滾動位置的新功能以及新的 Entry 和 Previewable 宏。這些改進使開發者能夠創建更靈活和高效的用戶界面。SwiftUI還引入了許多新的API,如窗口推送、文本選擇觀察、搜索焦點監控等,使開發更加便捷和強大。Y9128資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-96432-0.htmlSwiftUI 在 WWDC 24 之后的新變化

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

上一篇: .NET使用CsvHelper快速讀取和寫入CSV文件

下一篇: C#中的異步編程:深入理解async和await

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
91久久精品日日躁夜夜躁欧美| 国产精品播放| 亚洲性xxxx| 亚洲欧美日韩在线播放| 欧美精品七区| 亚洲女人天堂av| 亚洲国产精品久久久久婷婷老年 | 欧美日韩国产区一| 国产精品久久久久9999高清| 欧美国产欧美综合| 欧美日韩综合一区| 国产无遮挡一区二区三区毛片日本| 欧美日韩国产综合视频在线观看中文 | 欧美激情亚洲国产| 国产精品久久国产愉拍| 狠狠色狠狠色综合日日91app| 亚洲人体一区| 性欧美videos另类喷潮| 欧美sm重口味系列视频在线观看| 国产精品久久久久av免费| 一区二区在线观看av| 99国内精品| 久久久国产亚洲精品| 欧美日韩性生活视频| 国内精品美女av在线播放| 亚洲精品美女在线观看播放| 性色av一区二区三区在线观看| 美女诱惑一区| 免费观看国产成人| 国产精品盗摄一区二区三区| 在线不卡a资源高清| 亚洲一区二区三区久久| 裸体女人亚洲精品一区| 国产精品久久久久久影院8一贰佰| 国产精品久久久久久超碰| 一区视频在线| 亚洲欧美日韩中文视频| 欧美激情精品久久久久久蜜臀| 国产亚洲欧洲| 亚洲男人的天堂在线| 欧美成年人视频网站欧美| 国产精品一区二区在线| 国产日韩精品一区二区三区 | 国产亚洲欧美激情| 这里只有精品丝袜| 久久综合色一综合色88| 国产精品色婷婷| 亚洲裸体在线观看| 久久综合色播五月| 国产美女精品| 亚洲图色在线| 午夜精品久久久久久久白皮肤| 欧美电影电视剧在线观看| 国产精品永久免费观看| 一本大道久久a久久精品综合 | 国产九九视频一区二区三区| 在线视频中文亚洲| 欧美成人免费全部观看天天性色| 欧美日韩国产成人| 在线欧美小视频| 午夜视频久久久久久| 欧美日韩在线一区二区| 91久久精品美女高潮| 久久久久久**毛片大全| 国产美女精品视频| 亚洲网站在线观看| 欧美日韩精品是欧美日韩精品| 亚洲电影在线观看| 久久久蜜桃一区二区人| 国产日韩欧美一区二区三区四区| 国内揄拍国内精品久久| 午夜在线成人av| 久久蜜桃精品| 国产日韩欧美二区| 亚洲伊人一本大道中文字幕| 欧美三日本三级少妇三2023| 亚洲麻豆一区| 欧美女激情福利| 亚洲精品美女久久7777777| 欧美成人亚洲成人日韩成人| 亚洲国产高清一区| 欧美jjzz| 亚洲国产婷婷香蕉久久久久久| 乱中年女人伦av一区二区| 在线成人h网| 久久综合伊人77777麻豆| 精品999日本| 久久免费精品视频| 一区二区三区在线免费播放| 久久久久女教师免费一区| 国外成人网址| 久久人人九九| 亚洲第一黄色网| 亚洲视频视频在线| 欧美日韩一卡| 亚洲一区二区3| 国产精品免费一区豆花| 先锋影院在线亚洲| 国产一区二区三区在线免费观看| 中国亚洲黄色| 国产精品av免费在线观看| 亚洲一区二区在线| 国产欧美在线播放| 久久久久国产精品厨房| 亚洲成人在线观看视频| 欧美高清影院| 制服诱惑一区二区| 国产精品视频| 久久久久九九视频| 亚洲国产婷婷综合在线精品| 欧美日韩精品免费观看视频完整| 亚洲视频久久| 国产欧美日韩精品一区| 久久亚洲欧美| 亚洲精品视频免费观看| 欧美午夜精品理论片a级按摩| 亚洲欧美国产高清va在线播| 国产一区二区黄色| 欧美第一黄网免费网站| 中文欧美日韩| 国产一区在线视频| 亚洲欧美久久久| 国产欧美一区二区在线观看| 免费高清在线一区| 亚洲天堂网在线观看| 国产亚洲一区二区三区在线观看| 麻豆av一区二区三区久久| 亚洲精品久久久一区二区三区| 国产精品成人观看视频免费| 久久国产精品网站| 亚洲欧洲综合| 国产精品亚洲第一区在线暖暖韩国| 久久久久久综合| 夜夜精品视频| 国内精品免费在线观看| 欧美日本亚洲| 欧美一区不卡| 亚洲精品久久嫩草网站秘色| 国产伦精品一区二区三区高清版| 美脚丝袜一区二区三区在线观看| 在线亚洲欧美视频| 激情综合电影网| 欧美日韩在线观看一区二区三区| 久久九九免费| 亚洲视频www| 欧美日韩在线不卡一区| 欧美伊人久久| 99国产精品99久久久久久| 国产日产欧产精品推荐色 | 一区二区三区欧美成人| 国内视频一区| 国产精品久久久91| 欧美电影打屁股sp| 久久本道综合色狠狠五月| 日韩视频一区二区三区在线播放免费观看| 国产精品一区在线播放| 欧美国产乱视频| 久久成人免费日本黄色| 国产亚洲精品一区二区| 欧美日韩精品一本二本三本| 久久男人av资源网站| 亚洲一区久久久| 亚洲精品一区二区三区四区高清 | 国产精品免费看片| 欧美精品久久99| 久久综合色综合88| 欧美一区二区三区男人的天堂| 亚洲乱码国产乱码精品精| 一区视频在线| 国产一区二区精品丝袜| 国产精品久久久久久久久久久久久 | 国产精品久久久久久久久久久久久 | 亚洲国产精品一区二区www| 国产精品亚洲不卡a| 欧美日韩国语| 欧美成人国产| 久久蜜桃资源一区二区老牛 | 亚洲大胆人体视频| 韩国视频理论视频久久| 蜜桃伊人久久| 久久精品中文字幕一区二区三区| 亚洲一区bb| 99精品视频网| 亚洲啪啪91| 亚洲国产日韩一区二区| 影音先锋国产精品| 国内精品写真在线观看| 国产日韩在线看片| 国产精品欧美日韩一区| 国产精品vvv| 国产精品国产三级国产专播品爱网| 欧美喷潮久久久xxxxx| 午夜视频一区二区| 亚洲视频福利| 亚洲图片欧美一区| 99re6这里只有精品| 亚洲精品综合久久中文字幕| 91久久精品一区| 国产精品爽黄69| 国产精品高潮呻吟久久av无限| 欧美视频在线一区二区三区| 欧美日韩dvd在线观看| 欧美日韩在线播| 国产精品成人va在线观看|