[SwiftUI] View - padding()
24 February 2020
SwiftUI를 이제 공부를 시작하였기 때문에 잘못된 Pad 정보가 있을 수 있으니 유의하여 주시기 바랍니다.
Pads
기존 UIKit에서 Margin 또는 Padding을 주려면 감싼 View를 만들고, Autolayout을 설정하거나, LayoutMargin을 이용하였습니다. 즉, 이 말은 Margin 또는 Padding을 주려면 코드가 많이 필요하다는 의미입니다.
SwiftUI에서는 View
의 extension 함수로 padding()
를 제공하여 손쉽게 View의 Edge Inset에 특정 크기만큼 채워넣도록 설정합니다.
struct ContentView: View {
var body: some View {
Text("Hello, World!")
.background(Color.red)
.padding()
.background(Color.blue)
}
}
위의 코드를 통해 아래의 그림과 같이 쉽게 네 방향으로 Pad를 설정하였습니다.
또는 특정 방향을 지정하여 Pad를 설정할 수 있습니다.
struct ContentView: View {
var body: some View {
Text("Hello, World!")
.background(Color.red)
.padding([.leading, .top])
.background(Color.blue)
}
}
여러 겹의 Pad를 설정할 수 있습니다.
struct ContentView: View {
var body: some View {
Text("Hello, World!")
.background(Color.red)
.padding()
.background(Color.orange)
.padding()
.background(Color.yellow)
.padding()
.background(Color.green)
.padding()
.background(Color.blue)
.padding()
.background(Color.purple)
}
}
만약 Pad의 크기를 더 크게 주면 어떨까요?
struct ContentView: View {
var body: some View {
Text("Hello, World!")
.background(Color.red)
.padding(100)
.background(Color.orange)
.padding(100)
.background(Color.blue)
}
}
Portrait인 경우 Text View가 제대로 표시되지 않는 것을 확인할 수 있습니다. Text View의 Width 계산이 제대로 되지 않아 발생한 문제입니다. 따라서 Text View의 Frame Size를 설정하거나 또는 fixedSize 함수를 이용하여 size 계산을 돕도록 합니다.
struct ContentView: View {
var body: some View {
Text("Hello, World!")
.fixedSize(horizontal: true, vertical: false)
.background(Color.red)
.padding(100)
.background(Color.orange)
.padding(100)
.background(Color.blue)
}
}