在屏幕设计中,我从底部显示一个工作表,在本节中,我想将图像移动到工作表部分上方.在这部分中,当我用偏移量向上移动它时,它只保留在图纸中,但我想按如下方式进行.

我想要的是:

I want this

问题:

Problem

import SwiftUI

struct LoginView: View {
    @State private var showingResetPassword = false

    var body: some View {
        VStack(){
            HStack{
                Toggle("", isOn: $isToggled)
                    .toggleStyle(
                        CheckmarkToggleStyle()
                    )
                Text("Beni hatırla")
                Spacer()
                Button("Şifremi Unuttum") {
                            showingResetPassword.toggle()
                }.foregroundColor(Color.black)
                    .sheet(isPresented: $showingResetPassword) {
                            ZStack{
                                Image("resetPasswordFrog")
                                    .offset(y: -100)
                            }
                            .presentationDetents([.medium, .large])
                        }
            }.padding(.top, 10)

我使用了ZStack,但我无法以我想要的方式显示它.

推荐答案

您可以将presentationBackground设置为顶部透明的视图,例如顶部有一些填充的UnevenRoundedRectangle.然后,您只需将图像定位在工作表的顶部.

从技术上讲,该图像仍未"超出"工作表的边界,但由于工作表背景的顶部是透明的,因此图像看起来就像是伸出工作表.

这里有一个简单的例子.

struct ContentView: View {
    @State var sheet = false
    
    var body: some View {
        Button("Show Sheet") {
            sheet = true
        }
        .sheet(isPresented: $sheet) {
            VStack {
                Image("my profile pic")
                Spacer()
            }
            .presentationBackground {
                UnevenRoundedRectangle(topLeadingRadius: 30, topTrailingRadius: 30)
                    .fill(.background)
                    .overlay(alignment: .topTrailing) {
                        // the close button
                        Button {
                            sheet = false
                        } label: {
                            Image(systemName: "xmark")
                                .tint(.gray)
                                .font(.title)
                        }
                        .padding(30)
                    }
                    .padding(.top, 50)
            }
            .presentationDetents([.medium, .large])
            // the drag indicator would still appear at the "actual"
            // top of the sheet, so we hide it
            .presentationDragIndicator(.hidden)
            // you can make your own drag indicator with shapes if needed
        }
    }
}

输出:

enter image description here

Ios相关问答推荐

如何在SWIFT中处理不可发送的类型?

DriverKit驱动程序中可能存在IOBufferMemoyDescriptor泄漏

底部导航栏在iOS上浮动

OnTapGesture在其修改的视图外部触发

Xcode 15中的版本控制发生了什么?

如何将 Info.plist 文件添加到 Xcode for admob,错误 添加后会产生多个命令

为什么applicationState发布者只发布一次?

每次我路由到应用程序的主屏幕时,都无法使组合订阅正常工作

如何链式设置 AttributeContainer 的 UIKit 属性?

如何解码没有名称的 JSON 数组?

从iOS键盘输入时Flutter TextField输入消失

Flutter iOS 构建失败并在 ios/Runner/AppDelegate.swift 中出现多个错误

无法同时满足约束 - 没有适当的约束

构建失败:ld:重复符号 _OBJC_CLASS_$_Algebra5FirstViewController

如何在 OS X 或 iOS(不使用格式塔)中确定运行时的操作系统版本?

iPhone 未连接.连接 iPhone 后 Xcode 将继续

SRCROOT 和 PROJECT_DIR 有什么区别?

用户拒绝使用后如何提示用户打开位置服务

UISegmentedControl 以编程方式更改段数

有没有办法在应用store 之外分发 ios 应用程序?