在最新的iOS 14中,如何在swiftui中仅圆角滚动视图的上角
我试图只在滚动视图的上角画圆。在.clipShape()修饰符中提供自定义形状,在早期的iOS版本中可以正常工作,但在最新的iOS 14中,scrollview的底部内容正在消失。请提出解决办法 以下是圆角特定角的自定义形状:在最新的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
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 {
//...