- 是我是我还是我
- SwiftUI是使用swift语言进行ios开发的框架
- 区别于Objective-C
- 和Obejctive-C、使用Java语言的Android Studio一起同步学习
布局
首先看一个报错:
Function declares an opaque return type, but has no return statements in its body from which to infer an underlying type:
原因是
var body: some View {
}
里只能存在一个layout,多出任何内容就会报错;因此我们只能在一个大的布局里面嵌套设计。
- HStack水平放置,VStack垂直放置
添加组件
- 之前android可以在xml文件中拖拽组件完成UI设计,使用objective-c的ios开发中通过storyboard进行拖拽组件完成UI设计;两者都可以图形界面与代码分离。
- 现在的方式是可以手写代码/拖拽组件自动生成代码,然后在旁边的canvas进行preview预览当前布局设计。
常用组件
- Label
Text("手机软件开发") // 是一个label
@State var account: String = "" //变量声明
@State var password: String = ""
- TextField
HStack {
Image(systemName: "person")
TextField("用户名", text: $account, onCommit: {
})
}.padding(.all, 25.0)
- 按钮及动作事件的编写
Button(action: {
print("login action")
}) {
Text("登陆")
}.padding(.all, 25.0)
界面
主界面在ContentView.swift文件
对应安卓的MainActivity 和 基于OC的ios的Main.storyboard?
(复习:多个界面
基于OC的ios开发中是创建ViewController
安卓是创建Activity.java , 且必须在AndroidManifest.xml文件中声明activity元素)
变量与常量
normal 常量
@state 变量
页面跳转
复习:
基于OC的ios开发中 storyboard模式下控件和ViewController之间segue直接完成
Android Studio的android开发中:使用intent跳转
SwiftUI中使用NavigationView
NavigationView {
NavigationLink(
destination: LoginView(),isActive: $loginAccountIsActive){
Text("点我跳转")
}
}
实现效果: