首页 物流新闻 SwiftUI iOS 14 新 API 速递之二

SwiftUI iOS 14 新 API 速递之二

主张横屏阅览代码 封面来自 本文是 “SwiftUI iOS 14 新 API 速递” 系列之二。 特点包装器 UIApplicationDelegateAdaptor Modif…

主张横屏阅览代码
封面来自
本文是 “SwiftUI iOS 14 新 API 速递” 系列之二。
  • 特点包装器
    • UIApplicationDelegateAdaptor
  • Modifier
    • 为 iPadOS 增加边栏
    • 用 matchedGeometryEffect() 同步从一个视图到另一个视图的动画
  • 控件
    • ContainerRelativeShape
  • 创立可打开的列表
  • 用 DisclosureGroup 躲藏或许显现内容
  • 在 SwiftUI 中持续 NSUserActivity
  • 用 ExportFilesAction 导出文件

特点包装器

UIApplicationDelegateAdaptor 

假设你需要在 SwiftUI 中运用
AppDelegate
的功用,你应该创立一个承继自
NSObject

UIApplicationDelegate
的类,如下:
    
        
class AppDelegate: NSObject, UIApplicationDelegate {
        
   
        
   func (_ : UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) - Bool {
        
       print("发动结束")
        
       return true
        
   }
        
}

有了这个类,你就能够在运用的进口运用
UIApplicationDelegateAdaptor
特点包装器来创立和办理运用的署理类:
    
        
        
struct NewIn14App: App {
        
   (AppDelegate.self) var
        
        
   var body: some Scene {
        
       WindowGroup {
        
           ContentView()
        
       }
        
   }
        
}

Modifier

为 iPadOS 增加边栏

iPadOS 中不只能够显现惯例的分离式的视图控制器,还能够点击按钮触发边栏。在 SwiftUI 中,咱们通过给
NavigationView
增加第三个视图来完成边栏:
    
        
struct ContentView: View {
        
   var body: some View {
        
       NavigationView {
        
           Sidebar()
        
           PrimaryView()
        
           DetailView()
        
       }
        
   }
        
}

SwiftUI 会主动处理好显现按钮以及点击按钮时从屏幕边际滑入边栏的逻辑。一起,假设你的处于紧凑形式,还会将其折叠在主视图中。
假设你打算在边栏中运用列表,最好是用
.listStyle()
给边栏供给系统规范款式:
    
        
struct Sidebar: View {
        
   var body: some View {
        
       List(1..100) { i in
        
           Text("行 \(i)")
        
       }
        
       .listStyle(SidebarListStyle())
        
   }
        
}

用 matchedGeometryEffect() 同步从一个视图到另一个视图的动画

假设你有一个视图出现在视图层级的两个当地,而且需要在两处之间做动画过渡 —— 例如,从一个列表项放大成一个细节视图 —— 那么你能够运用 SwiftUI 的
matchedGeometryEffect()
modifier,它的作用有点像 Keynote 里的 Magic Move。
这个 modifier 的用法是附加在视图系统中不同当地,但表明同一元素的一对视图上。然后切换视图状况,触发同步动画。
为了演示它的用法,咱们制造一个比如,里边有一个赤色的圆,然后是文本。当视图状况切换时,圆跑到文本的后边,而且改动色彩:
    
        
struct ContentView: View {
        
    private var isFlipped = false
        
        
   var body: some View {
        
       VStack {
        
           if isFlipped {
        
               Circle()
        
                   .fill(Color.red)
        
                   .frame(width: 44, height: 44)
        
               Text("WWDC 2020")
        
                   .font(.headline)
        
           } else {
        
               Text("WWDC 2020")
        
                   .font(.headline)
        
               Circle()
        
                   .fill(Color.blue)
                   .frame(width: 44, height: 本文来自网络,不代表快递资讯网立场。转载请注明出处: http://www.llaiot.com/logistics-news/1835.html
上一篇
下一篇

为您推荐

返回顶部