I'm learning SwiftUI and noticed some weird behaviour regarding RoundedRectangle
, which is used to draw dividers. See in the screenshot below, the RoundedRectangle
with width = 1
ignores top and bottom safe area, where as if I use Divider()
instead, safe area is respected (see screenshot 2). I've attached the code in the end, what could be the problem? Thanks!
struct ContentView: View {
var body: some View {
TabView {
NavigationView {
HStack(spacing: 0) {
Spacer()
RoundedRectangle(cornerRadius: 0)
.frame(width: 1)
.overlay(.brown)
VStack {
Spacer()
.frame(height: 40)
CustomView()
Spacer()
CurrentView()
}
}
}
.navigationBarTitle("test", displayMode: .inline)
.tabItem {
Label(NSLocalizedString("Time", comment: "Tab - Time"), systemImage: "clock")
}
Text("Settings")
.tabItem {
Label("Settings", systemImage: "gearshape")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct CustomView: View {
var body: some View {
VStack {
RoundedRectangle(cornerRadius: 0)
.frame(height: 1)
.overlay(.brown)
HStack {
Text("FIRST".makeVertical())
Text("SECOND".makeVertical())
Divider()
Text("THIRD".makeVertical())
}
.padding()
RoundedRectangle(cornerRadius: 0)
.frame(height: 1)
.overlay(.brown)
}
.fixedSize(horizontal: true, vertical: true)
}
}
struct CurrentView: View {
var body: some View {
VStack {
Text("CURRENT")
}
}
}
extension String {
func makeVertical() -> String {
map { String($0) }
.joined(separator: "\n")
}
}