Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在最新的iOS 14中,如何在swiftui中仅圆角滚动视图的上角_Swift_Swiftui - Fatal编程技术网

在最新的iOS 14中,如何在swiftui中仅圆角滚动视图的上角

在最新的iOS 14中,如何在swiftui中仅圆角滚动视图的上角,swift,swiftui,Swift,Swiftui,我试图只在滚动视图的上角画圆。在.clipShape()修饰符中提供自定义形状,在早期的iOS版本中可以正常工作,但在最新的iOS 14中,scrollview的底部内容正在消失。请提出解决办法 以下是圆角特定角的自定义形状: struct RoundedCorner: Shape { var radius: CGFloat = .infinity var corners: UIRectCorner = .allCorners func path(in

我试图只在滚动视图的上角画圆。在.clipShape()修饰符中提供自定义形状,在早期的iOS版本中可以正常工作,但在最新的iOS 14中,scrollview的底部内容正在消失。请提出解决办法

以下是圆角特定角的自定义形状:

struct RoundedCorner: Shape {
    
    var radius: CGFloat = .infinity
    var corners: UIRectCorner = .allCorners
    
    func path(in rect: CGRect) -> Path {
        let path = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        return Path(path.cgPath)
    }
}

extension View {
    func cornerRadius(_ radius: CGFloat, corners: UIRectCorner) -> some View {
        clipShape( RoundedCorner(radius: radius, corners: corners) )
    }
}
下面是实现自定义圆角修改器的示例视图的代码:

struct SampleView: View {
    
    @State var fullname: String
    @State var email: String
    @State var phone: String
    @State var username: String
    
    var body: some View {
        ZStack {
            Color(.red).edgesIgnoringSafeArea(.top)
            VStack {
                Header()
                ZStack {
                    Color(.systemBackground).edgesIgnoringSafeArea(.bottom)
                    ScrollView {
                        VStack {
                            Text("Title")
                                .font(.largeTitle)
                                .foregroundColor(.primary)
                                .bold()
                                .padding()
                                .frame(maxWidth: .infinity, alignment: .leading)
                            TextField("type here...", text: $fullname)
                                .padding()
                            TextField("type here...", text: $email)
                                .padding()
                            TextField("type here...", text: $phone)
                                .padding()
                            TextField("type here...", text: $username)
                                .padding()
                            TextField("type here...", text: $fullname)
                                .padding()
                            TextField("type here...", text: $email)
                                .padding()
                            TextField("type here...", text: $phone)
                                .padding()
                            TextField("type here...", text: $username)
                                .padding()
                            Button(action: {  }, label: {
                                Text("Submit")
                                    .padding()
                                    .textCase(/*@START_MENU_TOKEN@*/.uppercase/*@END_MENU_TOKEN@*/)
                            })
                            .padding()
                        }
                    }
                }
                .frame(height: UIScreen.screenHeight/1.5)
                .cornerRadius(10, corners: [.topLeft, .topRight])
            }
        }
    }
}

private struct Header: View {
    var body: some View {
        HStack(alignment: .top) {
            VStack(alignment: .leading) {
                Text("")
                    .foregroundColor(Globals.Color.background)
                Spacer()
            }
            Spacer()
        }
    }
}
下面是截取底部内容的屏幕截图:


.cornerRadius
修改器应用于
滚动视图
,而不是应用于背景:

ZStack {
  Color(.systemBackground).edgesIgnoringSafeArea(.bottom)
    .cornerRadius(10, corners: [.topLeft, .topRight])
  ScrollView {
  //...