2

リストの y オフセットを変更したところ、クリップされてしまいました。
スクロールすると、タイトルの下のテキストとビューの上部にあるボタンが部分的に見えるようにしようとしています。つまり、画面の上部を少し透明にしたいのです。

上部の情報と重ならないように、リストにオフセットを追加しました。

リスト画像

上の画像は、私のコードに VStack を表示したものです。VStackが邪魔かなと思ってコメントアウトした結果が以下の画像です。

上部に VStack がないリスト

これが私のコードです:

var body: some View {
    ZStack {

        VStack {
            HStack {

                Button(action: {self.showAccountView.toggle()}) {
                    Image(systemName: "person.fill")
                        .renderingMode(.original)
                        .font(.system(size: 20, weight: .bold))
                        .frame(width: 44, height: 44)
                        .modifier(NavButtons())
                }
                .sheet(isPresented: $showAccountView) {
                    AccountView()
                }
                Spacer()
                Button(action: { self.showHelpCenter.toggle()}) {
                    Image(systemName: "questionmark")
                        .renderingMode(.original)
                        .font(.system(size: 20, weight: .bold))
                        .modifier(NavButtons())
                }
                .sheet(isPresented: $showHelpCenter) {
                    HelpCenter()
                }
            }
            .frame(maxWidth: .infinity)
            .padding(.horizontal)
            Spacer()
        }
        List {
            ForEach (store.allLogs) { thing in
                VStack (alignment: .leading) {
                    HStack {
                        Text("\(thing.date) , \(thing.time)")
                    }
                    Text(thing.notes)
                        .multilineTextAlignment(.leading)
                }
            }
        }.offset(y: 50)

    }
}

編集:

これは考えられる解決策の 1 つです。

struct MyList: UIViewRepresentable {
    func makeUIView(context: Context) -> UITableView {
        let view = UITableView()
        view.clipsToBounds = false

        return view
    }

    func updateUIView(_ uiView: UITableView, context: Context) {

    }
}

次に、makeUIView と updateUIView を使用してセルを更新します。これは面倒で、その時点では実際には SwiftUI を使用していません。

2 番目の編集
scrollView とフォームでこの問題が見つかりました 。黒は背景です。3つすべてのコードは次のとおりです。
オフセット時に ScrollView、Form、および List がすべてクリップされる

Group {
        List ((0 ... 10), id: \.self) {
            Text("Row \($0)")
        }
        .offset(y: 200)
        .border(Color.blue, width: 3)
        .background(Color.black)

        ScrollView {
            Text("Text")
        }
        .foregroundColor(.white)
        .offset(y: 200)
        .border(Color.blue, width: 3)
        .background(Color.black)

        Form {
            Text("Text")
        }
        .offset(y: 200)
        .border(Color.blue, width: 3)
        .background(Color.black)
    }

リストのワイヤーフレームは次のとおりです。
リストのワイヤーフレーム

List/Form/ScrollView と同じ高さのフレームの名前は次のとおりです。

リスト:
PlainList.BodyContent
ListCore.Container
ListRepresentable
View Host
TableWrapper
UpdateCoalescingTableView

フォーム:
GroupList.BodyContent
ListCore.Container
ListRepresentable
View Host
TableWrapper
UpdateCoalescingTableView

ScrollView:
ScrollViewBody
SystemScrollView
ビュー ホスト
HostingScrollView

私の質問は、「どうすれば...」から「なぜこれが起こっているのですか?」に変わったと思います。私は正確に何が起こっているのかについてかなり混乱しています。

4

2 に答える 2