前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SwiftUI(1):基本框架

SwiftUI(1):基本框架

原创
作者头像
Leopold.
发布2023-07-04 16:33:43
6100
发布2023-07-04 16:33:43
举报
文章被收录于专栏:一些实现方法

SwiftUI很强大,但是用法过于丰富因此不太好掌握。此篇文章的目的是梳理SwiftUI的设计者想法(框架),整个文章系列记录自己学习/使用SwiftUI的体会和想法。

基本框架:

主函数(入口):

主函数代码如下:

代码语言:javascript
复制
import SwiftUI

@main
struct SandwichesApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

以“@”开头的声明语词,例如@main,@State 都在向编译器声明该对象的特殊使用。

SwiftUI是核心库。Swift编程的核心概念有两个,包装(Wrapper),修饰(Modifier)。我们可以看到主代码(暂且这样称呼)的包装结构是,APP -> Scene(仅指出协议 protocol,后面会提到。WindowGroup更多的是起到布局的作用,此处先不进行讨论)。在接下来的文件我们会看到,Scene->View->View...等包装结构。其中View直接与内容相关,是最重要的包装。

此处可以看到 some ,这也是一个对编译器的一个声明,表示该对象并不是严格(字面)满足协议,而是允许有一些空间(关于这些特殊声明词,会在后面集中说明),详见:https://juejin.cn/post/6977622916233953294

而基本的内容则放在 ContentView 文件中,使用文件名即可完成对应文件(代码)的调用。

整个Swift的核心在于View的使用。

ContentView(内容所在处):

示例代码如下:

代码语言:javascript
复制
import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Text("Hello, world!")
        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

View -> some View 结构是 ContentView 文件最常用的框架,基本的内容都在 body 这个变量中。这也意味着 ‘body’ 并不严格(字面)满足协议。这里第一层的 View 更多的是一个抽象概念,与 Scene 相对应,提供一个接口。各种 View 的并列与包装现象也是常见的,因此也延伸出父View(Parent View)等概念。

PreviewProvider 协议下的变量(例如这里的ContentView_Previews)更多的是提供对当前文件的预览功能,对于整个App并没有结构性的用处。

常见的包装有:VStack(竖直)、HStack(水平)、ZStack(前后)、List等。

Assets

Assets作为App的资源放置处,App的图标、所有的照片都放置在这里。

例如,我们想要调用Assets的中的一张照片,使用下列的方式即可完成

代码语言:javascript
复制
Image("myphoto1")

其他的资源也可以通过对应的函数(外接口)来得到。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本框架:
    • 主函数(入口):
      • ContentView(内容所在处):
        • Assets
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档