实战教程·元宇宙来了,准备好你的电子名片了吗?(三)(3)

简介: 实战教程·元宇宙来了,准备好你的电子名片了吗?(三)

界面设计:链接地址多行文本框

接下来我们来完成链接地址的交互设计,TextEditor多行文本框控件和TextField输入框控件的使用方法类似,不同的是至今TextEditor多行文本框控件都没有提供placeholder提示文字的设置方法,只能由开发者自行实现。

不过没关系,实现多行文本框的方法及其提示文字的方法也很简单,如下代码所示:


// 链接地址
func indexURLView() -> some View {
    ZStack(alignment: .topLeading) {
        TextEditor(text: $indexURL)
            .font(.system(size: 17))
            .padding(15)
        if indexURL.isEmpty {
            Text("请输入主页链接")
                .foregroundColor(Color(UIColor.placeholderText))
                .padding(20)
        }
    }
    .background(Color(.systemGray6))
    .cornerRadius(8)
    .padding()
    .frame(maxHeight: 240)
}

image.png

上述代码中,我们创建了一个多行文本框视图indexURLView作为链接地址的输入框,在indexURLView视图中使用ZStack堆栈视图建立层级关系,当TextEditor输入框的绑定的内容indexURL为空时,则展示一个Text文本作为提示文字。

如此就实现了TextEditor多行文本框及其提示文字的交互。

交互设计:添加身份卡按钮及其方法

完成添加身份卡的页面元素后,我们来实现将输入的内容添加到“个人主页”的方法。

首先我们先创建基本的按钮,如下代码所示:

// 添加按钮
func addBtn() -> some View {
    Button(action: {
    }) {
        Text("添加")
            .font(.system(size: 17))
            .foregroundColor(.white)
            .bold()
            .padding()
            .frame(maxWidth: .infinity)
            .background(Color.green)
            .cornerRadius(8)
            .padding(.horizontal)
    }
}

image.png

回到NewView的Body部分,所有元素我们均以搭建完成,所有视图的排布我们可以使用VStack垂直布局容器进行排布,如下代码所示:

VStack(spacing: 15) {
    titleInputView()
    platformPicker()
    indexURLView()
    addBtn()
    Spacer()
}

image.png

样式完成之后,我们来实现添加身份卡到个人主页的交互。

我们来到Model.swift数据模型文件,原来我们声明了models数组变量,我们需要将其剪切到ContentView文件中来,作为ContentView中的一部份,用于后面的数据双向绑定使用,如下图所示:

image.png

然后回到NewView文件中,声明用于双向绑定的数据模型,如下代码所示:

@Binding var models: [Model]

由于使用了@Binding进行双向绑定参数,因此NewView中不能存在private声明的变量,因此我们需要删除原来platforms数组和gridItemLayout网格布局的private,并且给NewView赋予默认值,如下代码所示:


NewView(models: .constant([]))

image.png


相关文章
|
7月前
|
存储 JSON 缓存
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(1)
实战教程·元宇宙来了,准备好你的电子名片了吗?
54 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(1)
|
7月前
|
JSON API 数据格式
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)
49 0
|
7月前
|
存储 JSON 测试技术
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)
35 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(2)
|
7月前
|
存储 数据库 Swift
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
46 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(3)
|
7月前
|
数据库
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
33 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
|
7月前
|
存储 前端开发 数据库
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(6)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
40 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(6)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
37 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
|
7月前
|
存储 前端开发 Swift
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(1)
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)
38 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(1)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
42 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(4)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)
39 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)(3)