SwiftUI xem bố cục nội dung bất ngờ bật / nhảy khi xuất hiện?


16

Khi điều hướng đến chế độ xem mới bằng một biểu mẫu hoặc danh sách (được nhóm), nội dung sẽ xuất hiện khoảng một phần tư đường từ dưới cùng của tiêu đề chế độ xem điều hướng, sau đó "bật" đến vị trí chính xác khoảng nửa giây sau. Rất xấu. Không chắc đây là lỗi SwiftUI hay tôi đang cấu trúc một cái gì đó không chính xác?

Tôi đã thử nghiệm điều này trên cả trình giả lập và thiết bị có cùng kết quả.

Tôi nghĩ rằng nó có liên quan đến cách xử lý các liên kết điều hướng? Mỗi liên kết điều hướng gọi init () trên chế độ xem đích của nó khi ContentView xuất hiện. Đối với tôi điều này vô nghĩa, không nên gọi init () chỉ là thời điểm người dùng thực sự nhấp vào liên kết điều hướng?

Tôi cũng đã thử điều này với một trang tính và vấn đề không tồn tại với các trang tính, chỉ khi sử dụng các liên kết điều hướng với các biểu mẫu hoặc danh sách được tạo kiểu như được nhóm.

Mã từ một ứng dụng xem đơn hoàn toàn mới:

struct ContentView: View {

    var body: some View {
        NavigationView {
            NavigationLink(destination: TestView()) {
                Text("Test Link")
            }
        .navigationBarTitle("Content View")
        }
    }

}

struct TestView: View {

    var body: some View {
        Form {
            Text("Test View")
        }
        .navigationBarTitle("Test View")
    }

}

Câu trả lời:


10

Cung cấp một phần với văn bản tiêu đề sẽ khắc phục vấn đề, ngay cả khi văn bản trống. Mặc dù điều này sẽ để lại một khoảng cách giữa tiêu đề điều hướng và hàng đầu tiên.

Hoạt động với cả Biểu mẫu & Danh sách theo kiểu.

struct TestView: View {

    var body: some View {
        Form {
            Section(header: Text("")) {
                Text("Test View")
            }
        }
        .nvigationBarTitle("Test View")
    }
}

Đã thử cả hai giải pháp trong bài này, vẫn đang xảy ra. Điều gì khác có thể xảy ra? Thật lạ.
Lkabo

0

Tôi gặp vấn đề này với Danh sách được đẩy qua NavigationLink từ Danh sách GroupedListStyle. Khi bạn làm điều đó, thì có vẻ như SwiftUI cũng coi Danh sách được đẩy là nhóm. Chỉ cần đặt lại danh sách Kiểu sẽ hoạt động trong trường hợp này:

List { ... }.listStyle(DefaultListStyle())
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.