Define View
Published by @SoNiceInfo at 6/24/2020
You can define View and use them anytime.
Views can be defined and called in a separate file.
About View
View is very important in SwiftUI.
You can create a View by describing the View you want to display in the body, conforming to the View protocol when defining the structure. By calling View in View, apps are made.
In fact, elements like Text, Image, and HStack are all View.
Creating View
You can define your own View to combine the same code into one, which makes development and maintenance easier.
The basic type for creating a View looks like this and can be called from another View with ViewName().
struct ViewName: View {
var body: some View {
Text("This is custom View")
}
}Example
Here is a View called EmojiTile. EmojiTile is a square-like View that uses the received string and colors to display.
Various modifiers are available in View.
Here we are using padding (margins) and cornerRadius (rounded corners).
When the EmojiTile is ready, call it in ContentView.EmojiTile is called vertically in VStack.
//
// ContentView.swift
//
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
EmojiTile(text: "😀", color: .blue)
EmojiTile(text: "😉", color: .green)
EmojiTile(text: "😊", color: .purple)
EmojiTile(text: "😀", color: .blue)
}
}
}
struct EmojiTile: View {
var text: String
var color: Color
var body: some View {
Text(text)
.font(.custom("Emoji", size: 50))
.padding(50)
.background(color)
.cornerRadius(10)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

Separate View to a File
You can write your own View into a separate file.
If you write everything in ContentView.swift, you will not be able to continue to develop with it's readability.
I'll write EmojiTile to a file called EmojiTile.swift.
//
// ContentView.swift
//
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
EmojiTile(text: "😀", color: .blue)
EmojiTile(text: "😉", color: .green)
EmojiTile(text: "😊", color: .purple)
EmojiTile(text: "😀", color: .blue)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
//
// EmojiTile.swift
//
import SwiftUI
struct EmojiTile: View {
var text: String
var color: Color
var body: some View {
Text(text)
.font(.custom("Emoji", size: 50))
.padding(50)
.background(color)
.cornerRadius(10)
}
}
struct EmojiTile_Previews: PreviewProvider {
static var previews: some View {
EmojiTile(text: "", color: .blue)
}
}


