1

这是我的内容视图的代码。正如你所看到的,我已经尝试了一个 HStack 来包含 TextField,以及它自己的 TextField。角半径对灰色搜索矩形没有任何影响——边缘仍然是完美的矩形。

    
    @State var searchText = ""
    var body: some View {
        ZStack {
            //function that's the content argument to ZStack
            Color((.systemGreen))
            VStack {
                Text("App")
                    .font(.largeTitle)
                    .foregroundColor(Color.white)
                //HStack {
                TextField("Searchstring", text: $searchText)
                    .padding()
                    .background(Color(.systemGray6))
                    .padding()
                    .cornerRadius(12)
                //}
//                .padding()
//                .background(Color(.systemGray6))
//                .padding(.horizontal)
//                .cornerRadius(12)
            }
        }
    }
}

这就是预览的样子,在所有情况下: 角半径无法在预览中显示

4

1 回答 1

4

问题在这里:

.padding() /// 1.
.background(Color(.systemGray6)) /// 2.
.padding() /// 3.
.cornerRadius(12) /// 4.
  1. 您的文本字段有一个padding
  2. background被应用,之后padding
  3. 你添加另一个padding, 之后background
  4. cornerRadius你在上面应用另一个padding

结果,它padding是被四舍五入的,而不是background.

显示圆角透明填充的图表

相反,您想cornerRadiusbackground.

图表显示背景被四舍五入,然后在外面填充

struct ContentView: View {
    @State var searchText = ""
    var body: some View {
        ZStack {
            //function that's the content argument to ZStack
            Color((.systemGreen))
            VStack {
                Text("App")
                    .font(.largeTitle)
                    .foregroundColor(Color.white)
                
                TextField("Searchstring", text: $searchText)
                    .padding()
                    .background(Color(.systemGray6))
                    .cornerRadius(12) /// corner radius immediately after the background
                    .padding() /// extra padding outside the background
            }
        }
    }
}

结果:

背景是圆形的,然后在外面应用填充

于 2021-06-24T06:35:47.680 回答