簡體   English   中英

如何將尺寸更改傳達給 SwiftUI 子視圖

[英]How to communicate size change to SwiftUI subview

在我的 SwiftUI 代碼中,我有一個具有固定高度但動態寬度的元素,應根據對元素的要求進行設置。 如果沒有設置寬度,則元素的寬度應僅與孩子期望的一樣寬。

如何將大小更改傳播到封裝視圖?

例子:

import SwiftUI

struct MyView: View {
    var body: some View {
        Text("Hello World")
            .frame(height: 48)
            .background(Rectangle().fill(Color.blue))
    }
}

struct ContentView: View {
    var body: some View {
        VStack(spacing: 8) {
            MyView()
                .frame(width: 300)
            MyView()
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在此處輸入圖像描述

如果我正確理解您的需求,這是可能的解決方案

演示

使用 Xcode 11.4 / iOS 13.4 測試

struct MyView: View {
    var width: CGFloat? = nil

    var body: some View {
        Text("Hello World")
            .frame(height: 48)
            .frame(minWidth: width)
            .background(Rectangle().fill(Color.blue))
    }
}

struct ContentView: View {
    var body: some View {
        VStack(spacing: 8) {
            MyView(width: 300)
            MyView()
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM